Операционная система Linux

Задача диспетчера окон


X-сервер берет на себя ответственность только за выдачу X-приложению области для ввода-вывода и управление фокусом окна, но не занимается никакими манипуляциями по изменению этого окна: перемещением, изменением размера, сворачиванием и т. п. Мефодий уже наблюдал X-сервер, к которому присоединено два клиента, чьи окна перекрываются: два черно-белых окна друг на друге, и их нельзя ни растащить по углам, ни сжать. X-сервер умеет очень ловко манипулировать окошками, но сам никогда ничего не делает – он дожидается команды от пользовательской программы. А какая программа станет самостоятельно отслеживать перекрытие окон, фокус, заниматься изменением размера, перемещением и тому подобным? Ведь основная задача программы может быть совсем другой...

Ответ очевиден: этим должна заниматься программа, основная задача которой состоит в том, чтобы отслеживать перекрытие, изменять размер, двигать, превращать в иконку и так далее. По совместительству эта же программа будет рисовать при окнах всякие украшения: рамочки, заголовки, кнопки и меню управления – словом, делать все что нужно для организации логики управления окнами. Для этого придется также обрабатывать практически все события, передаваемые от устройств ввода, и многочисленные "подсказки" от приложений относительно того, какими они хотят видеть собственные окна. Это X-приложение называется диспетчером окон (window manager)1).

Диспетчер окон. Программа, основная функция которой – обеспечивать манипуляции с окнами: перемещение, изменение размера, сворачивание и т. п.

Благодаря стандартному протоколу X11 появилось такое множество диспетчеров окон для X Window System, что перечислить их все просто невозможно. Они различаются видом и кругом возможностей для манипулирования окнами: от самых простых (рамочка вокруг окна позволяет двигать его, изменять размер и поднимать из глубины; вот собственно, все) до весьма сложных (виртуальные экраны, анимированные полупрозрачные меню, панели инструментов, причудливой формы украшения на окнах; сами окна ползают по экранам, кувыркаются, растворяются как утренний туман; все это лязгает, попискивает и разговаривает приятным женским голосом). Когда Мефодий в первый раз запустил команду startx, тут же была запущена утилита wm-select, которая предложила ему выбрать, какой из установленных в его системе диспетчеров окон запустить.

Выбор диспетчера окон на свой вкус – очень непростое и вдумчивое занятие. Мы советуем просто соблюдать меру, сообразуясь с тем, для чего вы используете оконную систему: обилие ярких декораций отвлекает от работы (а если они вдобавок шевелятся?), а слишком строгий минимализм ее усложняет. Имейте в виду, что чем причудливее и многообразнее возможности окновода, тем труднее будет его полностью настроить именно под себя. Скорее всего, вы просто согласитесь пользоваться уже настроенными – общеупотребительными – возможностями, не доводя их до совершенства.


Рис. 16.6.  Диспетчер окон WindowMaker



Содержание раздела