detect pid of process owning the systray
git-svn-id: http://tint2.googlecode.com/svn/trunk@167 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
69ad0897d1
commit
a62548bf29
2 changed files with 26 additions and 2 deletions
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue