Одной из привлекательных особенностей в Linux-ах и прочих unix-like системах является то что оконные менеджеры можно менять как перчатки! Все они, конечно, отображают пользовательские программы в графических окнах - но у каждого свои фишки, настройки и особенности, что вызывает непрестанные дискуссии "KDE против Gnome" и подобные.
Для демонстрации вот мини-обзор (и мини-тьюториал) для TWM - это дефолтный оконный менеджер в разных *nix
системах, если ваш дистрибутив не содержал что-то более новомодное. Он очень легковесный, несколько непривычный в управлении - и притом хорошо конфигурируемый. Также в него вы попадаете в некоторых режимах восстановления системы - так что полезно будет узнать как им пользоваться и как из него выйти :)
Введение
В недавней статье говорилось об альтернативах Linux - в частности о FreeBSD - и было вскользь упомянуто что по умолчанию при установке X-Windows система конфигурируется с TWM в качестве оконного менеджера. Возникло ощущение что стоит рассказать о нём подробнее.
Напомним - оконный менеджер это одна из двух частей системы X Windows
, вторая - собственно X-сервер - обычно привлекает меньше внимания (она передаёт оконному менеджеру события от мыши и клавиатуры и в то же время отрисовывает графику по указаниям оконного менеджера).
Во многих системах (включая Ubuntu например) вы можете сконфигурировать несколько оконных менеджеров паралельно и выбирать нужный на странице входа. Или использовать разный для разных пользователей.
В то же время данная статья не подразумевает что нужно срочно переходить на TWM :) Большинство "толстых" современных оконных менеджеров включают дополнительные возможности и библиотеки (из-за чего часто набор дефолтных программ, начиная с "блокнота" в них может различаться). Например интерфейсы вроде Gnome могут содержать поддержку дополнительных операций с тачпадом которых не оказалось в драйвере (наиболее актуально - тапы и скролы например).
TWM - первый взгляд, первые осторожные шаги
Для исторической справки напомним что TWM создан в 1987-1989 годах - он ровесник Windows 2 и 3 версий (кто-то ещё помнит такие). Название расшифровывать неинтересно, хотя понятно что WM означает Window Manager.
Если вам захочется попробовать его живьём то вероятно лучше не пытаться сразу курочить свои X-винды (даже если вы работаете в каких-либо никсах а не на винде/маке) - а запуститься в виртуалке - например, скачать и установить FreeBSD в VirtualBox (с нынешним шустрым интернетом это вряд ли займёт вас надолго) - а в нём выполнить pkg install xorg
чтобы установить X-Windows - и запустить его с помощью startx
. И что за красота откроется нашим глазам?
В данном случае TWM сконфигурирован так, что при старте запускаются сразу 2-3 консольных окошка - и ещё модные часики. Общий стиль напоминает прошлый век, но поскольку целевая аудитория - айтишники а не секретарши, тут каких-то удивительных визуальных эффектов ожидать и не стоит, анимация всем до лампочки.
Заметьте что одно из консольных окон озаглавлено login
- оно "главное" - если вы в нём напишете exit
или закроете его, закроется и вся X-сессия, вы вернётесь в текстовый режим (ниже увидим как это настроено).
Манипуляции с окнами
Покатаем указатель мыши (тачпада) по экрану. Любопытная особенность - окно над которым указатель оказался, сразу становится активным (в фокусе). Например если вы хотите набрать что-то в одном из консольных окошек - наведите на него указатель, иначе нажатия на клавиатуре в него не попадут.
Кнопки закрытия окна нет (по умолчанию) - в полосе заголовка окон только кнопка сворачивания в иконку (слева) и изменения размера (справа). Перетаскивать окна можно привычно - за эту самую полосу заголовка. А вот если вы попытаетесь ресайзить окно с помощью кнопки в правом верхнем углу, вы не сразу поймёте что происходит - пользоваться ею нужно так:
-
нажмите на кнопку ресайза указателем и держите, после чего сдвиньте указатель к той границе окна, которую хотите подвинуть (например, правой или верхней, или к углу) - эта граница (или угол) "захватятся" и дальнейшие движения; если же вы сразу после нажатия кнопки попытаетесь уменьшить окно, ничего интересного происходить не будет :)
Запуск приложений тоже может сперва сбить с толку. Попробуем запустить калькулятор :) просто поскольку он (вероятно) установлен по умолчанию. Наведите курсор мыши на терминал и введите команду xcalc
(конечно, нажимаем enter
после каждой команды) - мы с удивлением увидим что калькулятор сразу не появился, но отобразилась "сетка" как бы предлагающая где именно разместить окно.
Вы можете поводить указателем туда-сюда, выбрать (прицелиться!) и шлёпнуть новое окно на выбранное место экрана (нажав кнопку мыши), например так:
Если вы расположили окна так, что они перекрываются, вы опять же имеете шанс удивиться, если попытаетесь "поднять" нижележащее окно наверх. Например если мы открыли калькулятор поверх терминала и попытаемся щёлкнуть в терминал чтобы он "всплыл" - этого не произойдёт - хотя клик ему передаётся, можно даже выделять в нём что-то мышкой и печатать текст. Чтобы окно "всплыло" - нужно кликать по полосе заголовка (или использовать пункты Raise / Lower из меню).
Итак, про Меню
Вы его не видите, а оно есть (как тот суслик). Наведите указатель на свободное пространство вне окон, так чтобы появился крестик похожий на букву X - как на первой картинке выше. Нажмите и удерживайте кнопку - появится вот такая менюшка. Перемещаться по ней нужно продолжая удерживать кнопку (мыши, тачпада).
Первые пункты - для управления окнами (размер, подвинуть, поднять) - это нам понятно. Вот любопытное - тут два пункта для закрытия окон. Delete
просит окно "закрыться по-хорошему" а Kill
предсказуемо "убивает" не спрашивая. Обычно нужен первый вариант - если вы его выберите, курсор изменится на череп с костями - наводите его на нужное (точнее, ненужное уже) окно - и жмёте - оно закроется. Попробуйте закрыть калькулятор. Надеюсь, вам понравится :)
В целом после первых пяти минут удивление проходит и приходит понимание что пользоваться можно как и любыми другими "окнами". Сами-то приложения в окошках остаются всё теми же. В частности "скопировать-вставить" работает, хотя и немного непривычно: как только вы выделите текст в каком-нибудь окне, он сразу попадает в буфер обмена (без дополнительных нажатий волшебных клавиш и т.п.) - чтобы его вставить в каком-нибудь другом окне, используйте Shift-Insert
.
Конфигурирование
Чтобы освоиться с настройкой TWM под свои вкусы, попробуем проделать три упражнения:
-
уберем запуск лишних терминалов при старте
-
добавим кнопку закрытия окон
-
добавим в меню команду для запуска браузера
Как водится, файлов настройки может быть больше одного - во-первых файл(ы) настройки самих X-Windows и отдельный файл конфигурации TWM. Во-вторых общие системные файлы или отдельные пользовательские.
Сначала посмотрим на /usr/local/etc/X11/xinit/xinitrc
- откроем его в одном из терминальных окошек с помощью nano
или vi
- и здесь мы с любопытством обнаружим как запускается TWM и программы по умолчанию в нём (прокрутите где-то в конец):
Мы видим что в конце запускается команда twm
и вместе с ней "часики" (xclock
) и целых три терминала. Причем последний (в отличие от остальных) не в бэкграунд - и ему задаётся как раз имя login
. Можно удалить остальные два, например, а этому уменьшить размер до привычных 80x25
.
Естественно редактировать файл в /usr/local...
можно только из-под рута. Если вы экспериментируйте на неизвестной системе и ещё не разобрались как стать рутом, можете скопировать этот файл в пользовательскую папку под именем .xinitrc
- и редактировать его задавая настройки только для своего пользователя.
Конфигурация самого TWM - в файле вроде system.twmrc
- его тоже можно создать в пользовательской директории, или отредактировать общий. Возможно для этого придётся сначала его найти :)
$ find / -name '*.twmrc'
В моём случае он оказался в /usr/local/share/X11/twm/system.twmrc
- можно также его скопировать в свою папку и редактировать здесь, чтобы не писать с нуля.
Итак, открываем этот файл опять же с помощью nano
или vim
подправим кое-что. Одной из первых мы увидим секцию куда можно вписать самые общие настройки, и добавим здесь:
RightTitleButton "xlogo11" = f.delete
Тут легко разобраться - RightTitleButton
это название настройки, xlogo11
- иконка для кнопки (отдельный вопрос где они лежат - пока пропустим) - а после знака равенства требуемая функция, в данном случае f.delete
- "аккуратное" закрытие окна.
Крутим дальше - появится секция Color
- тут ничего объяснять наверное не требуется - название элементов и чуть непривычный но понятный 16-ричный синтаксис. Попробуем изменить цвета заголовков и меню например (результат посмотрим на картинке ниже).
Довольно длинная секция с настройками для Button1 / Button2 / Button3
- реакций на нажатия на разных участках (тайтлбарах, свободных местах) и притом можно задавать модифицирующие клавиши. Синтаксис здесь чуть сложнее - но можно догадаться или почитать в man twm
. В качестве упражнения попробуйте добавить вызов меню при щелчке не по свободному пространству, а по тайтлу окна (например, на правую кнопку или на левую с шифтом). Это будет удобно! Подсказка - для этого нужно "обокрасть" уже имеющуюся привязку для клика по свободной области:
Button1 = : root : f.menu "defops"
Наконец внизу мы находим секцию определения меню, начинающуюся со строчки menu "defops"
- причем тут мы догадываемся что defops - просто название менюшки и мы можем задать несколько разных меню - а при вызове их (например при биндинге к кнопке, как выше) указывать разные имена, например по левой и правой кнопке, при клике по свободной зоне или по тайтлу и так далее. Здесь синтаксис незамысловатый - скопируем строчку с XTerm и модифицируем чтобы запускать Firefox (конечно его надо не забыть установить pkg install firefox
например).
"Firefox" f.exec "exec firefox &"
Наконец, давайте сохраним файл и чтобы применить новые настройки, щёлкнем в меню пункт Restart - при этом оконный интерфейс перезапустится лишь частично, все открытые окна программ останутся на том же месте и в том же состоянии, где были.
Картинка ниже примерно изображает результаты нашего мини-эксперимента - цвета изменились, в меню добавился пункт - в тайтлбаре кнопка закрытия.
Заключение
Как сказано выше, эта статья не призывает "срочно менять ваш KDE / Gnome / Unity" на TWM. Напомню, что только более-менее популярных оконных менеджеров существует штук двадцать (не считая новомодной разработки Wayland
- альтернатива X-Windows
вообще). Так что там есть что попробовать. Разнообразные фичи кочуют между менеджерами. Если вы ищете легковесный менеджер для машины с относительно скромными ресурсами - fluxbox
или Xfce
возможно будут чуточку ближе к современности по ощущениям - хотя принципы использования и конфигурирования во многом похожи.
В целом сама идея альтернативных и кастомизируемых оконных менеджеров настолько занимательна, что понемногу нашла своё отражение и в Microsoft Windows, правда не настолько далеко зашла и не снискала равной популярности.
Автор: RodionGork