[Volgograd] coding:desktop number

Serge S. Fukanchik fuxx на solvo.ru
Ср Сен 10 11:26:32 MSD 2003


Vitalik писал мне ранее:

>  как я могу узнать номер десктопа в котором открыто окно и/или
>  активного десктопа средствами GTK+-1.2 / Xlib ?
Вообще говоря никак. Множественные десктопы это средство оконного менеджера
а не оконной системы, т.е. на самом деле не существует множества десктопов -
X сервер работает только с одним. Это именно оконный менеджер создает иллюзию
множества десктопов - для каждого окна он помнит его desktop и когда ты переключаешься
(средствами оконного менеджера) на другой десктоп он убирает с экрана окна текущего
десктопа (XUnmapWindow для каждого из них) и показывает на экран окна того самого на
который ты переключаешься (XMapWindow для каждого из них).

>
>  или поставлю проблему по другому
>  я узнаю о том, что окно свернулось или развернулось (minimized) сигналами map и
>  unmap, но они же срабатывают при переключении десктопа.
Сигналы map/unmap говорят не о минимизации окна. Все несколько сложнее.
map/unmap это сигналы уведомляющие твою прогу о том что одно из ее окон
появилось или было убрано с экрана при помощи функции XMapWindow/XUnmapWindow.
При этом визуально оно просто пропадает с экрана. X сервер не занимается рюшечками - 
для этого предназначен оконный менеджер. В зависимости от причины map/unmap он рисует
или анимацию сворачивания в иконку, или анимацию появления нового рабочего стола,
или что-то еще делает. Так что именно поэтому ты получаешь map/unmap в обоих случаях.

>  может у кого есть идея как это сделать по другому?
Думаю что общего случая не существует. Т.е. скорее всего каждый оконный менеджер
делает это по своему. Т.е. ты сделаешь для одного WM, а в другом это не будет работать.
Есть правда островок порядка и в этом бардаке - были сделаны попытки стандартизировать
это поведение, так что если все еще осталось желание с этим связываться, то сходи сюда:
http://www.freedesktop.org/standards/wm-spec/1.0-html/ar01s02.html#id2836140 - для
общего ознакомления со всем этим и сюда
http://www.freedesktop.org/standards/wm-spec/1.0-html/ar01s05.html#id2838014 - чтобы
почитать про конкретное property окна _NET_WM_DESKTOP, которое тебе нужно.
Если тебе повезет, то какой-нибудь из твоих оконных менеджеров будет придерживаться
этого стандарта, потому что далеко не все WM ставят правильые window hints.
Какие функции в gtk? В основном те, что описаны на этой странице:
http://developer.gnome.org/doc/API/2.0/gdk/gdk-X-Window-System-Interaction.html
Например: 
gdk_net_wm_supports,
gdk_x11_screen_supports_net_wm_hint,
gdk_x11_screen_get_window_manager_name.

В общем -- удачи! Когда получится что-нибудь, будь добр - расскажи как и что. 
Не хочется самому тратить на это время - а знать хочется. Ведь именно для этого и
существуют списки рассылки, не так ли?

(хе-хе)

-- 
APL is a write-only language.  I can write programs in APL, but I can't
read any of them.
		-- Roy Keir



Подробная информация о списке рассылки Volgograd