all repos — tint2 @ f0adc5c7d0af40a5987b56fa1afb3b5264c3040d

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

improve multi_monitor mode

git-svn-id: http://tint2.googlecode.com/svn/trunk@29 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
lorthiois@bbsoft.fr lorthiois@bbsoft.fr@121b4492-b84c-0410-8b4c-0d4edfb3f3cc
commit

f0adc5c7d0af40a5987b56fa1afb3b5264c3040d

parent

e36c729d7b48d8374169854f62d90d56af86d156

M ChangeLogChangeLog

@@ -1,3 +1,7 @@

+2009-01-29 +- use panel_margin parameter even with full_width +- multi_monitor mode : monitor number are ordered according to coordinate + so taskbar on the left show task in the left monitor 2009-01-20 - change config file format : add another padding parameter
M src/clock/clock.csrc/clock/clock.c

@@ -43,6 +43,7 @@ else clock->time_precision = 1;

clock->area.posy = panel.area.pix.border.width + panel.area.paddingy; clock->area.height = panel.area.height - (2 * clock->area.posy); + clock->area.width = 0; // force posx and width detection clock->area.redraw = 1; gettimeofday(&clock->clock, 0);
M src/config.csrc/config.c

@@ -105,18 +105,17 @@

void extract_values (const char *value, char **value1, char **value2, char **value3) { - char *b, *c; + char *b=0, *c=0; if (*value1) free (*value1); if (*value2) free (*value2); if (*value3) free (*value3); - if (b = strchr (value, ' ')) { + if ((b = strchr (value, ' '))) { b[0] = '\0'; b++; } else { - b = 0; *value2 = 0; *value3 = 0; }

@@ -124,7 +123,7 @@ *value1 = strdup (value);

g_strstrip(*value1); if (b) { - if (c = strchr (b, ' ')) { + if ((c = strchr (b, ' '))) { c[0] = '\0'; c++; }

@@ -254,8 +253,9 @@ if (value2) panel.area.height = atoi (value2);

} else if (strcmp (key, "panel_margin") == 0) { extract_values(value, &value1, &value2, &value3); - panel.marginx = atoi (value1); + panel.marginleft = panel.marginright = atoi (value1); if (value2) panel.marginy = atoi (value2); + if (value3) panel.marginright = atoi (value3); } else if (strcmp (key, "panel_padding") == 0) { extract_values(value, &value1, &value2, &value3);

@@ -543,7 +543,7 @@ get_monitors();

if (panel.monitor > (server.nb_monitor-1)) { panel.sleep_mode = 1; - printf("tint2 sleep and wait monitor %d.\n", panel.monitor+1); + fprintf(stderr, "tint2 sleep and wait monitor %d.\n", panel.monitor+1); } else { panel.sleep_mode = 0;

@@ -552,7 +552,7 @@ if (!server.monitor[panel.monitor].width || !server.monitor[panel.monitor].height)

fprintf(stderr, "tint2 error : invalid monitor size.\n"); } - if (!panel.area.width) panel.area.width = server.monitor[panel.monitor].width - 1; + if (!panel.area.width) panel.area.width = server.monitor[panel.monitor].width - 1 - panel.marginleft - panel.marginright; // taskbar g_taskbar.posy = panel.area.pix.border.width + panel.area.paddingy;

@@ -654,8 +654,8 @@

void save_config () { fprintf(stderr, "tint2 warning : convert user's config file\n"); - panel.area.paddingx = panel.area.paddingy = panel.marginx; - panel.marginx = panel.marginy = 0; + panel.area.paddingx = panel.area.paddingy = panel.marginleft; + panel.marginleft = panel.marginright = panel.marginy = 0; if (panel.old_task_icon == 0) g_task.icon_size1 = 0; if (panel.old_panel_background == 0) panel.area.pix.back.alpha = 0;

@@ -690,7 +690,7 @@ if (panel.position & LEFT) fputs(" left\n", fp);

else if (panel.position & RIGHT) fputs(" right\n", fp); else fputs(" center\n", fp); fprintf(fp, "panel_size = %d %d\n", panel.area.width, panel.area.height); - fprintf(fp, "panel_margin = %d %d\n", panel.marginx, panel.marginy); + fprintf(fp, "panel_margin = %d %d\n", panel.marginleft, panel.marginy); fprintf(fp, "panel_padding = %d %d\n", panel.area.paddingx, panel.area.paddingy); fprintf(fp, "font_shadow = %d\n", g_task.font_shadow);
M src/panel.csrc/panel.c

@@ -115,9 +115,9 @@ {

Window win; /* panel position determined here */ - if (panel.position & LEFT) server.posx = server.monitor[panel.monitor].x + panel.marginx; + if (panel.position & LEFT) server.posx = server.monitor[panel.monitor].x + panel.marginleft; else { - if (panel.position & RIGHT) server.posx = server.monitor[panel.monitor].x + server.monitor[panel.monitor].width - panel.area.width - panel.marginx; + if (panel.position & RIGHT) server.posx = server.monitor[panel.monitor].x + server.monitor[panel.monitor].width - panel.area.width - panel.marginright; else server.posx = server.monitor[panel.monitor].x + ((server.monitor[panel.monitor].width - panel.area.width) / 2); } if (panel.position & TOP) server.posy = server.monitor[panel.monitor].y + panel.marginy;

@@ -173,6 +173,35 @@ panel.refresh = 1;

} +Pixmap get_root_pixmap () +{ + Pixmap ret; + Window root = RootWindow(server.dsp, server.screen); + + ret = None; + int act_format, c = 2 ; + u_long nitems ; + u_long bytes_after ; + u_char *prop ; + Atom dummy_id; + + do { + if (XGetWindowProperty(server.dsp, root, server.atom._XROOTPMAP_ID, 0, 1, + False, XA_PIXMAP, &dummy_id, &act_format, + &nitems, &bytes_after, &prop) == Success) { + if (prop) { + ret = *((Pixmap *)prop); + XFree(prop); + break; + } + } + } while (--c > 0); + + //if (ret == None) printf("pas de background\n"); + return ret; +} + + void set_panel_background() { Pixmap wall = get_root_pixmap();

@@ -199,5 +228,6 @@ XCopyArea (server.dsp, panel.area.pix.pmap, server.root_win, server.gc_root, 0, 0, panel.area.width, panel.area.height, server.posx, server.posy);

set_redraw (&panel.area); } +
M src/panel.hsrc/panel.h

@@ -47,7 +47,7 @@ int sleep_mode;

int refresh; int monitor; int position; - int marginx, marginy; + int marginleft, marginright, marginy; // -------------------------------------------------- // taskbar point to the first taskbar in panel.area.list. number of tasbar == nb_desktop x nb_monitor.
M src/server.csrc/server.c

@@ -135,56 +135,30 @@ else return 0;

} -Pixmap get_root_pixmap () -{ - Pixmap ret; - Window root = RootWindow(server.dsp, server.screen); - - ret = None; - int act_format, c = 2 ; - u_long nitems ; - u_long bytes_after ; - u_char *prop ; - Atom dummy_id; - - do { - if (XGetWindowProperty(server.dsp, root, server.atom._XROOTPMAP_ID, 0, 1, - False, XA_PIXMAP, &dummy_id, &act_format, - &nitems, &bytes_after, &prop) == Success) { - if (prop) { - ret = *((Pixmap *)prop); - XFree(prop); - break; - } - } - } while (--c > 0); - - return ret; -} - - -/* -Pixmap get_root_pixmap () +int compareMonitor(const void *monitor1, const void *monitor2) { - // conky capture correctement le fond d'écran en xlib !! - Pixmap root_pixmap; - unsigned long *res; - - server.root_win = window_get_root(); + Monitor *m1 = (Monitor*)monitor1; + Monitor *m2 = (Monitor*)monitor2; - res = server_get_property (server.root_win, server.atom._XROOTPMAP_ID, XA_PIXMAP, 0); - if (res) { - root_pixmap = *((Drawable*) res); - XFree(res); - return root_pixmap; + if (m1->x < m2->x) { + return -1; } - else { - printf("get_root_pixmap incorrect\n"); - // try _XSETROOT_ID - } - return 0; + else + if (m1->x > m2->x) { + return 1; + } + else + if (m1->width < m2->width) { + return 1; + } + else + if (m1->width > m2->width) { + return -1; + } + else { + return 0; + } } -*/ void get_monitors()

@@ -193,13 +167,16 @@ if (server.monitor) free(server.monitor);

server.nb_monitor = 0; server.monitor = 0; + int nb_monitor; if (XineramaIsActive(server.dsp)) { - XineramaScreenInfo *info = XineramaQueryScreens(server.dsp, &server.nb_monitor); + XineramaScreenInfo *info = XineramaQueryScreens(server.dsp, &nb_monitor); if (info) { int i; - server.monitor = calloc(server.nb_monitor, sizeof(Monitor)); + //printf("nb_monitors %d\n", nb_monitor); + server.nb_monitor = nb_monitor; + server.monitor = calloc(nb_monitor, sizeof(Monitor)); for (i = 0; i < server.nb_monitor; i++) { server.monitor[i].x = info[i].x_org; server.monitor[i].y = info[i].y_org;

@@ -207,6 +184,9 @@ server.monitor[i].width = info[i].width;

server.monitor[i].height = info[i].height; } XFree(info); + + // ordered monitor according to coordinate + qsort(server.monitor, server.nb_monitor, sizeof(Monitor), compareMonitor); } }
M src/server.hsrc/server.h

@@ -1,6 +1,6 @@

/************************************************************************** -* server : -* - +* server : +* - * * Check COPYING file for Copyright *

@@ -98,7 +98,6 @@ void server_refresh_main_pixmap ();

void server_catch_error (Display *d, XErrorEvent *ev); void server_init_atoms (); void get_monitors(); -Pixmap get_root_pixmap(); #endif
M src/taskbar/task.csrc/taskbar/task.c

@@ -173,7 +173,7 @@ int num;

data = server_get_property (tsk->win, server.atom._NET_WM_ICON, XA_CARDINAL, &num); if (data) { - printf("get_icon plein\n"); + //printf("get_icon plein\n"); // ARGB int w, h; long *tmp_data;

@@ -187,14 +187,13 @@

XFree (data); } else { - printf("get_icon vide\n"); - //XWMHints *hints; - //hints = XGetWMHints(server.dsp, tkwin); - //if (hints != NULL) { - // XFree(hints); - //} - // XChangeProperty (display, windowH, XInternAtom (display, "_NET_WM_ICON", False), XA_CARDINAL, 32, PropModeReplace, (unsigned char*) data, dataSize); - return; + //printf("get_icon vide\n"); + XWMHints *hints = XGetWMHints(server.dsp, tsk->win); + if (hints) { + if (hints->flags & IconPixmapHint) { + } + XFree(hints); + } } }
M tintrc01tintrc01

@@ -24,9 +24,9 @@ #---------------------------------------------

# PANEL #--------------------------------------------- panel_monitor = 1 -panel_position = top center -panel_size = 900 30 -panel_margin = 15 2 +panel_position = bottom center +panel_size = 0 30 +panel_margin = 15 2 15 panel_padding = 9 0 font_shadow = 0 panel_background_id = 1
M tintrc02tintrc02

@@ -7,7 +7,7 @@ # BACKGROUND AND BORDER

#--------------------------------------------- rounded = 1 border_width = 0 -background_color = #282828 40 +background_color = #282828 60 border_color = #000000 0 rounded = 1

@@ -34,7 +34,7 @@

#--------------------------------------------- # TASKBAR #--------------------------------------------- -taskbar_mode = multi_desktop +taskbar_mode = multi_monitor taskbar_padding = 0 0 0 taskbar_background_id = 2

@@ -66,7 +66,7 @@ time1_font = sans 7

time2_format = %A %d %B time2_font = sans 7 clock_font_color = #ffffff 100 -clock_padding = 4 0 +clock_padding = 2 0 clock_background_id = 0 #---------------------------------------------
M tintrc03tintrc03

@@ -5,69 +5,67 @@

#--------------------------------------------- # BACKGROUND AND BORDER #--------------------------------------------- -rounded = 5 +rounded = 10 border_width = 1 background_color = #ffffff 40 -border_color = #ffffff 70 - -rounded = 4 -border_width = 0 -background_color = #ffffff 0 -border_color = #d1d1d1 0 +border_color = #ffffff 60 -rounded = 4 +rounded = 1 border_width = 0 background_color = #ffffff 30 -border_color = #d1d1d1 14 +border_color = #ffffff 15 + + #--------------------------------------------- # PANEL #--------------------------------------------- panel_monitor = 1 -panel_position = top center -panel_size = 1000 25 -panel_margin = 0 7 -panel_padding = 7 3 0 +panel_position = bottom center +panel_size = 0 30 +panel_margin = 0 0 +panel_padding = 5 4 font_shadow = 0 -panel_background_id = 1 +panel_background_id = 0 #--------------------------------------------- # TASKBAR #--------------------------------------------- -taskbar_mode = single_desktop -taskbar_padding = 0 0 0 -taskbar_background_id = 0 +taskbar_mode = multi_desktop +taskbar_padding = 8 0 0 +taskbar_background_id = 1 #--------------------------------------------- # TASKS #--------------------------------------------- task_icon = 1 task_text = 1 -task_width = 150 +task_width = 160 task_centered = 1 task_padding = 2 1 -task_font = myriad pro 8 -task_font_color = #000000 70 +task_font = Dejavu sans 8 +task_font_color = #000000 60 task_active_font_color = #000000 100 -task_background_id = 2 -task_active_background_id = 3 +task_background_id = 0 +task_active_background_id = 2 #--------------------------------------------- # SYSTRAY #--------------------------------------------- #systray_padding = 9 3 -#systray_background_id = 0 +#systray_icon_opacity = 50 +#systray_background_id = 1 #--------------------------------------------- # CLOCK #--------------------------------------------- -time1_format = %H:%M -time1_font = sans bold 12 +time1_format = %A %d %H:%M +time1_font = Dejavu sans 10 #time2_format = %A %d %B -#time2_font = sans bold 10 -clock_font_color = #000000 70 -clock_padding = 4 0 -clock_background_id = 0 +time2_font = sans 7 +clock_font_color = #000000 80 +clock_padding = 8 0 +clock_background_id = 1 #--------------------------------------------- # MOUSE ACTION ON TASK
M tintrc06tintrc06

@@ -25,7 +25,7 @@ #---------------------------------------------

# PANEL #--------------------------------------------- panel_monitor = 1 -panel_position = top left +panel_position = bottom left panel_size = 0 30 panel_margin = 0 0 panel_padding = 9 2 7