[Comm] Re: Looking for app to minimize all opened windows
Anton Kovalenko
=?iso-8859-1?q?a=5Fkovalenko_=CE=C1_mtu-net=2Eru?=
Сб Фев 15 22:54:12 MSK 2003
>>>>> Michael Shigorin writes:
> On Sat, Feb 15, 2003 at 12:19:56AM +0300, Pavel S. Khmelinsky wrote:
>> Ищу программу под иксы для свертывания сразу всех окон. Хорошо
>> бы она умел сворачивать окна как на текущем десктопе, так и на
>> всех сразу. Использую Window Maker. Может кто что подскажет?
> Эээ... если с двух раз не ответили -- значит, видимо, все хуже :)
Всё _ещё хуже_.
> Значтак: "свернуть" в понятиях X11 -- это событие (event).
Если имеется ввиду нечно вроде UnmapNotify или PropertyNotify
(WM_STATE) -- да, это событие. Но здесь оно не поможет:
единственное его предназначение -- чтобы WM сообщал нашей
прикладухе: "знаешь, а я тут твоё окно свернул"...
Если мы и пошлём прикладухе _ЭТО_ через SendEvent, всё, чего мы
добьёмся -- прикладуха будет думать, что её свернули.
Так что пользоваться нам надо не "посылкой событий", а вызовом
XIconifyWindow. Вот пример (proof-of-concept) -- программка,
которая сворачивает окно с заданным id.
------- содержимое файла iconify.c -------
#include <X11/Xlib.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
Display *dpy;
if (argc!=2) {
/* We need egg-zactly one arg */
return 1;
}
dpy = XOpenDisplay(NULL); /* use $DISPLAY variable */
XIconifyWindow (dpy, strtol(argv[1],0,0), 0 /* FIXME: it's screen num. */ );
XCloseDisplay( dpy );
return 0;
}
-----------------------------------------
Это можно откомпилировать командой
gcc -o iconify iconify.c -L/usr/X11R6/lib -lX11
А затем в окошке xterm запустить
./iconify $WINDOWID
Окошко этого самого xterm, разумеется, должно свернуться
[...Мишины рекомендации по поводу eventов пропускаю.
Они очень подробные и полезные, но не для этой задачи...]
--
With Best Wishes, Anton Kovalenko /* http://kovalenko.webzone.ru */
#!/usr/bin/wish - best wish I have for you!
Подробная информация о списке рассылки community