Здравствуйте. Получаю список окон при помощи свойства корневого окна _NET_CLIENT_LIST:
Window *winlist(Display* display, unsigned long* len) {
Atom prop = XInternAtom(display,"_NET_CLIENT_LIST",False), type;
int form;
unsigned long remain;
unsigned char* list;
XGetWindowProperty(display,XDefaultRootWindow(display),prop,0,1024, False, 33,
&type,&form,len,&remain,&list);
return (Window*)list;
}
void getWinList(Display* display, QList<unsigned long>* winIDs) {
unsigned long len;
Window* list = winlist(display, &len);
for (unsigned int i = 0; i < len; ++i) {
winIDs->append(*(list + i));
}
}
ID есть и если перевести полученные числа из десятичной СС в шестнадцатеричную СС, то адреса совпадают с теми, что показывает wmctrl -l и xprop -root _NET_CLIENT_LIST. Пытаюсь получить имена:
QString getNameByID(Display* display, unsigned long* id) {
Atom prop = XInternAtom(display, "_NET_WM_NAME", False), type;
int form;
unsigned long remain;
unsigned char* list;
unsigned long len = 0;
XGetWindowProperty(display, (Window)id, prop, 0, 1024, False, 4,
&type, &form, &len, &remain, &list);
for (unsigned int i = 0; i < len; ++i) {
qDebug() << *(list + i);
}
return "";
}
В ответ на qDebug не получаю ничего. Подскажите, пожалуйста, в чем дело.