Всем привет. У меня есть вот такой кусок кода:
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
int main ()
{
char **name;
Display *dsp = XOpenDisplay(NULL);
Window wnd;
XTextProperty text;
int param;
XGetInputFocus(dsp,&wnd,¶m);
XGetWMName(dsp,wnd-1,&text);
Xutf8TextPropertyToTextList(dsp,&text,&name,¶m);
printf("%s\n",*name);
return 0;
}
И он работает верно, но! Но почему-то XGetInputFocus всегда возвращает ID активного окна, но на 1 больше, чем реальный ID. Поэтому потом приходится делать в XGetWMName wnd-1. Попахивает плохим кодом.
p.s. Можно ли использовать XGetInputFocus для поиска активного окна? Некоторые делают через атомы, но это сильно увеличивает код. В чем минусы данного решения?