Index: plugins/clock/clock.c
===================================================================
RCS file: /cvsroot/further/further/plugins/clock/clock.c,v
retrieving revision 1.5
diff -u -r1.5 clock.c
--- plugins/clock/clock.c	2001/05/23 04:04:23	1.5
+++ plugins/clock/clock.c	2001/05/26 00:24:49
@@ -62,7 +62,7 @@
 	evas_set_text(evas, edate, buf);
 	evas_set_color(evas, edate, CLOCK_HIGHLIGHT_COLOR);
 	evas_get_geometry(evas, edate, NULL, NULL, &text_width, 0);
-	evas_move(evas, edate, dpy_width - text_width - 5, clock_height);
+	evas_move(evas, edate, dpy_width - text_width - 5, clock_height + 10);
 	evas_show(evas, edate);
 }
 
Index: plugins/clock/settings.h
===================================================================
RCS file: /cvsroot/further/further/plugins/clock/settings.h,v
retrieving revision 1.3
diff -u -r1.3 settings.h
--- plugins/clock/settings.h	2001/05/25 02:45:42	1.3
+++ plugins/clock/settings.h	2001/05/26 00:24:49
@@ -7,7 +7,7 @@
  */
 //#define DATE_FORMAT "%A, %B %d, %G"
 #define DATE_FORMAT "%A, %d %B %G"
-#define TIME_FORMAT "%I:%M"
+#define TIME_FORMAT "%I:%M%P"
 
-#define CLOCK_FONT "georgia", 20
+#define CLOCK_FONT "tahomabd", 20
 #define DATE_FONT "georgia", 12
Index: plugins/launcher/launcher.c
===================================================================
RCS file: /cvsroot/further/further/plugins/launcher/launcher.c,v
retrieving revision 1.4
diff -u -r1.4 launcher.c
--- plugins/launcher/launcher.c	2001/05/24 07:49:01	1.4
+++ plugins/launcher/launcher.c	2001/05/26 00:24:49
@@ -7,6 +7,8 @@
 #include <stdio.h>
 #include "../plugin.h"
 
+#define CONFIG_FILE PLUGINPATH "/launcher/.launcher"
+
 static char *plugin_name = "Launcher";
 
 static void fork_exec(char *cmd) {
@@ -54,23 +56,42 @@
 	evas_set_color(evas, o, 255, 255, 255, 255);
 	zoom(o, 44, 44);
 }
-static void term_mouse_up  (void *data, Evas e, Evas_Object o, int b, int x, int y) {
+void term_mouse_up  (void *data, Evas e, Evas_Object o, int b, int x, int y) {
+	char *exec = (char*)data;
 	if (b == 1)
-		fork_exec("gnome-terminal");
+		fork_exec(exec);
 	zoom(o, 48, 48);
 }
 
+Evas_Object add_icon(char *exec, char *icon, int x, int y) {
+    Evas_Object o;
+    o = evas_add_image_from_file(evas, icon);
+    evas_set_color(evas, o, 255, 255, 255, 128);
+    evas_move(evas, o, x, y);
+    evas_show(evas, o);
+    evas_callback_add(evas, o, CALLBACK_MOUSE_IN,   term_mouse_in,   NULL);
+    evas_callback_add(evas, o, CALLBACK_MOUSE_OUT,  term_mouse_out,  NULL);
+    evas_callback_add(evas, o, CALLBACK_MOUSE_DOWN, term_mouse_down, NULL);
+    evas_callback_add(evas, o, CALLBACK_MOUSE_UP,  term_mouse_up, (void*)exec);
+
+    return o;
+}
+
 void further_init(plugin_data *data) {
-	Evas_Object o;
+	FILE *fp;
+	char exec[1024], icon[1024];
+	int x = 5, y = dpy_height- 52;
+
+	fp = fopen(CONFIG_FILE, "r");
 
 	data->name = plugin_name;
 
-	o = evas_add_image_from_file(evas, "/usr/share/pixmaps/gnome-term.png");
-	evas_set_color(evas, o, 255, 255, 255, 128);
-	evas_move(evas, o, 5, dpy_height - 48 - 5);
-	evas_show(evas, o);
-	evas_callback_add(evas, o, CALLBACK_MOUSE_IN,   term_mouse_in,   NULL);
-	evas_callback_add(evas, o, CALLBACK_MOUSE_OUT,  term_mouse_out,  NULL);
-	evas_callback_add(evas, o, CALLBACK_MOUSE_DOWN, term_mouse_down, NULL);
-	evas_callback_add(evas, o, CALLBACK_MOUSE_UP,   term_mouse_up,   NULL);
+	while (fscanf(fp, "%s %s", exec, icon) != EOF) {
+		printf("exec: %s\t icon: %s\n", exec, icon);
+		add_icon(exec, icon, x, y);
+		x += 50;
+	}
+	// add_icon("xterm", "/usr/share/pixmaps/gnome-term.png", 5, 715);
+    // add_icon("netscape", "/opt/gnome/share/pixmaps/gnome-html.png", 55, 715);
+    // add_icon("xemacs", "/opt/gnome/share/pixmaps/gnome-emacs.png", 105, 715);
 }
Index: plugins/xmms/xmms.c
===================================================================
RCS file: /cvsroot/further/further/plugins/xmms/xmms.c,v
retrieving revision 1.3
diff -u -r1.3 xmms.c
--- plugins/xmms/xmms.c	2001/05/23 04:04:23	1.3
+++ plugins/xmms/xmms.c	2001/05/26 00:24:49
@@ -15,7 +15,8 @@
 static int text_offset, text_delta;
 static char *cur_title = NULL;
 
-static Evas_Object ecaption, eplay;
+static Evas_Object ecaption, eplay, etime;
+static void wheel_volume(void *data, Evas e, Evas_Object o, int b, int x, int y);
 
 #define BASE_ALPHA 100
 
@@ -58,6 +59,7 @@
 
 static void update_title() {
 	int title_changed = 0;
+	char buffer[1024];
 
 	if (!xmms_remote_is_running(0)) {
 		if (cur_title) {
@@ -74,9 +76,10 @@
 		if (!cur_title || strcmp(cur_title, newtitle) != 0) {
 			title_changed = 1;
 			if (cur_title) g_free(cur_title);
-			cur_title = newtitle;
+			sprintf(buffer, "%s %d\n", newtitle, xmms_remote_get_output_time(0));
+			cur_title = newtitle;	
 		}
-		if (!title_changed)
+		if (!title_changed) 
 			g_free(newtitle);
 	}
 
@@ -89,14 +92,40 @@
 	}
 }
 
+static void update_time() {
+	char buffer[1024];
+	int minutes, seconds;
+	double w, h;
+
+	minutes = xmms_remote_get_output_time(0) / 60000;
+	seconds = (xmms_remote_get_output_time(0) / 1000) % 60;
+	sprintf(buffer, "%d:%02d", minutes, seconds);
+	evas_set_text(evas, etime, buffer);
+	evas_get_geometry(evas, etime, NULL, NULL, &w, &h);	
+	evas_move(evas, etime, dpy_width - w, dpy_height - h - 30);
+	furtherp_add_event(1000, update_time, NULL);
+}
+
 static void play_cb(void *data, Evas e, Evas_Object o, int b, int x, int y) {
-	xmms_remote_play(0);
+	if (b != 4 && b != 5) {
+		xmms_remote_play(0);
+	} else {
+		wheel_volume(data, e, o, b, x, y);
+	}
 }
 static void pause_cb(void *data, Evas e, Evas_Object o, int b, int x, int y) {
-	xmms_remote_pause(0);
+	if (b != 4 && b != 5) {
+		xmms_remote_pause(0);
+	} else {
+        wheel_volume(data, e, o, b, x, y);
+	}
 }
 static void stop_cb(void *data, Evas e, Evas_Object o, int b, int x, int y) {
-	xmms_remote_stop(0);
+	if (b != 4 && b != 5) {
+		xmms_remote_stop(0);
+	} else {
+        wheel_volume(data, e, o, b, x, y);
+    }
 }
 static void playlist_cb(void *data, Evas e, Evas_Object o, int b, int x, int y) {
 	if (b == 1)
@@ -105,16 +134,40 @@
 		xmms_remote_pl_win_toggle(0, !xmms_remote_is_pl_win(0));
 	else if (b == 3)
 		xmms_remote_main_win_toggle(0, !xmms_remote_is_main_win(0));
+	else
+		wheel_volume(data, e, o, b, x, y);
 }
 static void prev_cb(void *data, Evas e, Evas_Object o, int b, int x, int y) {
-	xmms_remote_playlist_prev(0);
-	update_title();
+	if (b != 4 && b != 5) {
+		xmms_remote_playlist_prev(0);
+		update_title();
+	} else {
+        wheel_volume(data, e, o, b, x, y);
+    }
 }
 static void next_cb(void *data, Evas e, Evas_Object o, int b, int x, int y) {
-	update_title();
-	xmms_remote_playlist_next(0);
+	if (b != 4 && b != 5) {
+		update_title();
+		xmms_remote_playlist_next(0);
+	} else {
+        wheel_volume(data, e, o, b, x, y);
+    }
 }
+static void wheel_volume(void *data, Evas e, Evas_Object o, int b, int x, int y) {
+	gint cur_vol, new_vol;
 
+	if (b == 4) {
+        cur_vol = xmms_remote_get_main_volume(0);
+        new_vol = cur_vol + (cur_vol * 0.1);
+        xmms_remote_set_main_volume(0, new_vol);
+    }
+    if (b == 5) {
+         cur_vol = xmms_remote_get_main_volume(0);
+        new_vol = cur_vol - (cur_vol * 0.1);
+        xmms_remote_set_main_volume(0, new_vol);
+    }
+}
+
 static void update_cb(void *data) {
 	update_title();
 	furtherp_add_event(1000, update_cb, NULL); /* delay one second */
@@ -139,14 +192,14 @@
 
 void further_init(plugin_data *data) {
 	double h;
-	int x, y;
-	Evas_Object eclip;
+	int x, y, time_y, plugin_height;
+	Evas_Object eclip, ewheel;
 
 	plugin = data;
 	plugin->name = plugin_name;
 	plugin->x = dpy_width - plugin_width;
-
 	x = plugin->x; 
+    plugin_height = dpy_height - (dpy_height - x);
 
 	ecaption = evas_add_text(evas, "tahomabd", 8, "[xmms not running]");
 	evas_get_geometry(evas, ecaption, NULL, NULL, NULL, &h);
@@ -161,6 +214,22 @@
 	evas_resize(evas, eclip, plugin_width, h);
 	evas_set_clip(evas, ecaption, eclip);
 	evas_show(evas, eclip);
+
+	ewheel = evas_add_rectangle(evas);
+	evas_set_color(evas, ewheel, 255, 255, 255, 0);
+	evas_move(evas, ewheel, x, y);
+	evas_resize(evas, ewheel, plugin_width, plugin_height);
+	evas_callback_add(evas, ewheel,
+					CALLBACK_MOUSE_UP, wheel_volume, NULL);
+	evas_show(evas, ewheel);
+
+	etime = evas_add_text(evas, "tahomabd", 8, "00:00");
+	evas_get_geometry(evas, ecaption, NULL, NULL,  NULL,  &h);
+ 	time_y = dpy_height - h - 30;
+	evas_set_color(evas, etime, 255, 255, 255, 100);
+	evas_move(evas, etime, x, time_y);
+	furtherp_add_event(1000, update_time, NULL);
+	evas_show(evas, etime);	
 
 	y += h + 2;
 

