From: Thierry Lorthiois Date: Sun, 30 Aug 2009 16:20:44 +0000 (+0000) Subject: detect pid of process owning the systray X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=45244915741a21c1784048172d835693e107874d;p=chaz%2Ftint2 detect pid of process owning the systray --- diff --git a/ChangeLog b/ChangeLog index 7c49eed..27d4567 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2009-08-30 +- detect pid of process owning the systray + 2009-08-30 - added taskbar_active_background_id to change current desktop background. warning : this feature have a price on cpu (tint2 redraw all task) when you switch desktop. diff --git a/src/systray/systraybar.c b/src/systray/systraybar.c index c135077..c014fd9 100644 --- a/src/systray/systraybar.c +++ b/src/systray/systraybar.c @@ -171,9 +171,30 @@ void resize_systray(void *obj) int init_net() { + Window win = XGetSelectionOwner(server.dsp, server.atom._NET_SYSTEM_TRAY_SCREEN); + // freedesktop systray specification - if (XGetSelectionOwner(server.dsp, server.atom._NET_SYSTEM_TRAY_SCREEN) != None) { - fprintf(stderr, "tint2 : another systray is running\n"); + if (win != None) { + // search pid + Atom _NET_WM_PID, actual_type; + int actual_format; + unsigned long nitems; + unsigned long bytes_after; + unsigned char *prop; + int pid; + + _NET_WM_PID = XInternAtom(server.dsp, "_NET_WM_PID", True); + //atom_name = XGetAtomName (dpy,atom); + + int ret = XGetWindowProperty(server.dsp, win, _NET_WM_PID, 0, 1024, False, AnyPropertyType, &actual_type, &actual_format, &nitems, &bytes_after, &prop); + + fprintf(stderr, "tint2 : another systray is running"); + if (ret == 0) { + pid = prop[1] * 256; + pid += prop[0]; + fprintf(stderr, " pid=%d", pid); + } + fprintf(stderr, "\n"); return 0; }