История изменений
Исправление Zubok, (текущая версия) :
Чтобы узнать, надо вызвать XGetWindowProperty (если через xlib) или соответствующую функцию xcb. В xcb есть библиотека по работе с EWMH, но я до сих пор и не смотрел, что там вообще. :)
libxcb-ewmh2 - utility libraries for X C Binding -- ewmh
Чтобы отправить окно на нужный рабочий стол, надо послать пользовательское сообщение при помощи XSendEvent (или аналог в XCB). Об этом, кстати, в конце раздела по ссылке, которую я дал выше, говорится.
В общем, если тебе нужен конкретный код, то я лучше выдрать откуда-нибудь, чтобы не писать вслепую. Можно выдрать из wmctrl, так как программка маленькая. В main.c. См. функции get_property (получить свойство) и функцию client_msg (послать пользовательское сообщение). Вызовы:
/* получить десктоп */
(unsigned long *)get_property(disp, win,
XA_CARDINAL, "_NET_WM_DESKTOP", NULL)
/* попросить перекинуть на десктоп */
client_msg(disp, win, "_NET_WM_DESKTOP", (unsigned long)desktop, 0, 0, 0, 0)
disp - дисплей, win - XID окна.
Исправление Zubok, :
Чтобы узнать, надо вызвать XGetWindowProperty (если через xlib) или соответствующую функцию xcb. В xcb есть библиотека по работе с EWMH, но я до сих пор и не смотрел, что там вообще. :)
libxcb-ewmh2 - utility libraries for X C Binding -- ewmh
Чтобы отправить окно на нужный рабочий стол, надо послать пользовательское сообщение при помощи XSendEvent (или аналог в XCB). Об этом, кстати, в конце раздела по ссылке, которую я дал выше, говорится.
В общем, если тебе нужен конкретный код, то я лучше выдрать откуда-нибудь, чтобы не писать вслепую. Можно выдрать из wmctrl, так как программка маленькая. В main.c. См. функции get_property (получить свойство) и функцию client_msg (послать пользоввательское сообщение). Вызовы:
/* получить десктоп */
(unsigned long *)get_property(disp, win,
XA_CARDINAL, "_NET_WM_DESKTOP", NULL)
/* попросить перекинуть на десктоп */
client_msg(disp, win, "_NET_WM_DESKTOP", (unsigned long)desktop, 0, 0, 0, 0)
disp - дисплей, win - XID окна.
Исходная версия Zubok, :
Чтобы узнать, надо вызвать XGetWindowProperty (если через xlib) или соответствующую функцию xcb. В xcb есть библиотека по работе с EWMH, но я до сих пор и не смотрел, что там вообще. :)
libxcb-ewmh2 - utility libraries for X C Binding -- ewmh
Чтобы отправить окно на нужный рабочий стол, надо послать пользовательское сообщение при помощи XSendEvent (или аналог в XCB). Об этом, кстати, в конце раздела по ссылке, которую я дал выше, говорится.
В общем, если тебе нужен конкретный код, то я лучше выдрать откуда-нибудь, чтобы не писать вслепую. Можно выдрать из wmctrl. См. функции get_property (получить свойство) и функцию client_msg (послать пользоввательское сообщение). Вызовы:
/* получить десктоп */
(unsigned long *)get_property(disp, win,
XA_CARDINAL, "_NET_WM_DESKTOP", NULL)
/* попросить перекинуть на десктоп */
client_msg(disp, win, "_NET_WM_DESKTOP", (unsigned long)desktop, 0, 0, 0, 0)
disp - дисплей, win - XID окна.