--- conky.c.orig	2005-07-28 20:59:09.738172203 +0200
+++ conky.c	2005-07-28 21:02:45.680700499 +0200
@@ -216,6 +216,7 @@
 	ALIGNR,
 	ALIGNC,
 	GRAPH,
+	TAB,
 };
 
 static struct special_t {
@@ -361,6 +362,11 @@
 	new_special(buf, OUTLINE)->arg = c;
 }
 
+static inline void new_tab(char *buf, long c)
+{
+       new_special(buf, TAB)->arg = c;
+}
+
 static inline void new_alignr(char *buf, long c)
 {
 	new_special(buf, ALIGNR)->arg = c;
@@ -460,6 +466,7 @@
 	OBJ_fs_used,
 	OBJ_fs_used_perc,
 	OBJ_hr,
+	OBJ_tab,
 	OBJ_alignr,
 	OBJ_alignc,
 	OBJ_i2c,
@@ -818,6 +825,7 @@
 		 arg = "/";
 	obj->data.fs = prepare_fs_stat(arg);
 	END OBJ(hr, 0) obj->data.i = arg ? atoi(arg) : 1;
+	END OBJ(tab, 0) obj->data.i = arg ? atoi(arg) : 1;
 	END OBJ(i2c, INFO_I2C) char buf1[64], buf2[64];
 	int n;
 
@@ -1633,7 +1641,10 @@
 			OBJ(hr) {
 				new_hr(p, obj->data.i);
 			}
-			OBJ(i2c) {
+                        OBJ(tab) {
+				new_tab(p, obj->data.i);
+			}
+                        OBJ(i2c) {
 				double r;
 
 				r = get_i2c_info(&obj->data.i2c.fd,
@@ -2722,6 +2733,14 @@
 							     arg);
 				break;
 
+			case TAB:
+				{
+					int pos_x = text_start_x + text_width - cur_x - 1;
+					if ( pos_x > specials[special_index].arg)
+						w = pos_x - specials[special_index].arg;
+				}
+			break;
+
 			case ALIGNR:
 				{
 					int pos_x =
