LINUX.ORG.RU

История изменений

Исправление 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 окна.