Опубликован: 22.06.2005 | Уровень: для всех | Доступ: платный | ВУЗ: Компания IBM
Лекция 16:

Графический интерфейс (X11)

Диспетчер окон

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

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

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

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

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

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

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

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

Совершенно необязательно начинать сеанс работы в X11 с запуска диспетчера окон – его можно запустить в любой момент. Например, Мефодий может к уже запущенному им X-серверу подключить любой диспетчер окон, запустив его все из той же виртуальной консоли. Например, чтобы запустить WindowMaker, достаточно выполнить команду wmaker.

С запуском диспетчера окон экран X-сервера заметно преобразился: одноцветный фон сменился изображением, по углам возникли квадратные кнопки, а вокруг окна xterm образовалась рамка с названием окна и кнопками. Эта рамка – "органы управления" окном, так называемые оконные примитивы (их собственное имя – "widgets" – сокращение от "window gadgets", "оконные безделушки"). "Ухватившись" мышью за рамку, Мефодий поменял размеры окна, а, нажав правую кнопку мыши на заголовке окна, – увидел меню, состоящее из списка операций, которые можно произвести над этим окном. Все эти возможности предоставлены диспетчером окон WindowMaker.

Меню операций с окном в WindowMaker

Рис. 16.7. Меню операций с окном в WindowMaker
Удобства

Однако помимо своей основной функции – операций с окнами – многие диспетчеры окон владеют массой других приемов по упрощению работы пользователя и повышению наглядности. Самые главные из таких удобств – кнопки для запуска типичных задач: нажатие на кнопку заменяет собой выполнение команды в эмуляторе терминала. Команда может быть длинной или забываться, а тут одно нажатие и кнопка все время на виду. Это удобно для привычных повседневных действий. Например, в правом верхнем углу экрана WindowMaker присутствует кнопка с изображением монитора – для запуска xterm. Вторая важнейшая возможность – общее меню, в котором классифицированы доступные в системе приложения. При помощи такого меню пользователь может найти и запустить нужную прикладную задачу.

Большое удобство, предоставляемое очень многими диспетчерами окон для X11, – виртуальные экраны. Когда пользователь работает сразу с несколькими задачами, ему обычно приходится открывать много окон, так что они уже не умещаются без наложения на физической поверхности экрана. Чтобы при этом было удобно переключаться между задачами,

Общее меню в WindowMaker

Рис. 16.8. Общее меню в WindowMaker
можно использовать некоторые специально для этого предназначенные функции диспетчера окон: сворачивание и разворачивание, перекладывание окон "выше" и "ниже" в стопке, список активных задач и т. п. Но еще удобнее было бы не перекладывать окна, а разложить их на большей, чем размеры экрана, поверхности – виртуальном экране. Таким образом, настоящий экран – это небольшое "окошко", в котором можно видеть только часть виртуального, а при необходимости можно это окошко сместить в другой конец "виртуального стола", где лежат окна с другими задачами.

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

Виртуальные экраны есть и в WindowMaker. Переключение между ними осуществляется при помощи специальной кнопки в левом верхнем углу экрана или сочетания клавиш Alt+N, где N – номер виртуального экрана. Однако чтобы не забывать, где лежит какое окно, полезна возможность окинуть одним взглядом все разложенное на виртуальном экране. окно, отображающее в уменьшенном масштабе вид виртуального экрана и позволяющее перейти к нужной части, называется пейджер и относится к распространенным в диспетчерах окон удобствам.

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

Удобство графического интерфейса – понятие очень субъективное. При этом технологически безразлично, рисовать ли кнопки в левом верхнем углу или в правом нижнем, какой цвет и шрифт использовать в меню и т. п. – все это составляет профиль диспетчера окон. Поэтому в подавляющем большинстве диспетчеров окон существуют более или менее развитые возможности изменить внешний вид и оформление графической среды. В WindowMaker для этого используется специальная утилита с графическим интерфейсом (Мефодий может ее вызвать при помощи самой верхней кнопки в левом верхнем углу экрана ). В других диспетчерах окон, как, например, в очень развитом fvwm, профиль может просто храниться в конфигурационном файле ( ~/.fvwm2rc ). Для изменения внешнего вида fvwm следует редактировать этот файл.

Среди диспетчеров окон в тяжелых весовых категориях выступают и fvwm2 (множество функций), и Enlightenment (настоящая игрушка), и WindowMaker, и некоторые другие. Человеку, проводящему рабочее время за экраном компьютера, важен комфорт на рабочем месте, поэтому всякая мелочь или ее отсутствие может иметь решающее значение при выборе того или иного диспетчера окон.

Аягоз Имансакипова
Аягоз Имансакипова
Тимур Булатов
Тимур Булатов

С момента выхода курса прошло достаточно много времени, и хотелось бы понимать, насколько курс является актуальным на сегодняшний день.