Как узнать, какие проинсталлированы оконные менеджеры?
Собственно, сабж. Посоветуйте, коллеги, как из командной строки узнать какие вообще gui стоят. Судя по куче разнородных пакетов, у меня их штук пять.
Piter_prbg
25.06.15 12:08:55 MSK
Как ты до такого докатился, всё подряд ставил? =)
cinyflo ★★★★★
( 25.06.15 12:10:13 MSK )
Сразу, как только появится нормальный способ из libastral.so узнать, какой у тебя дистрибутив.
anonymous
( 25.06.15 12:11:11 MSK )
Ответ на: комментарий от anonymous 25.06.15 12:11:11 MSK
Извините, торопился. Debian wheezy.
p.s. я ничего туда не ставил, это не моё )
Piter_prbg
( 25.06.15 12:13:37 MSK ) автор топика
Ответ на: комментарий от Piter_prbg 25.06.15 12:13:37 MSK
dpkg -l|grep "window manager"
Deleted
( 25.06.15 12:21:40 MSK )
Ответ на: комментарий от Piter_prbg 25.06.15 12:13:37 MSK
update-alternatives --list x-window-manager
anonymous
( 25.06.15 12:25:09 MSK )
как-то так: $ ls -l /etc/X11/Sessions/
anTaRes ★★★★
( 25.06.15 12:52:21 MSK )
Ответ на: комментарий от anTaRes 25.06.15 12:52:21 MSK
ЕМНИП
Для оконных менеджеров , вроде файлов сессий нет.
sudopacman ★★★★★
( 25.06.15 13:35:22 MSK )

Ну за пять минут не коленке вот такой вот однострочник нарисовался.
for package in $(debtags search "x11::window-manager" | awk '') ; do dpkg -l | awk -v package=$package '' ; done
shell-script ★★★★★
( 25.06.15 14:08:39 MSK )
Ответ на: комментарий от shell-script 25.06.15 14:08:39 MSK
dctrl-tools, ara, да хоть aptitude на худой конец.
Альтернативное управление окнами в Linux
Я из тех, кто ставит на Caps Lock переключение раскладки потому, что лень нажимать 2 клавиши, когда можно нажимать одну. Я бы даже хотел 2 ненужные клавиши: одну бы я использовал для включения английской раскладки, а вторую для русской. Но вторая ненужная клавиша — это вызов контекстного меню, которая настолько ненужная, что выпиливается многими производителями ноутбуков. Так что приходится довольствоваться тем, что есть.
А ещё я не хочу при переключении окон искать их иконки на панели задач, ловить взглядом названия при листании через Alt+Tab, листать рабочие столы и т. д. Я хочу нажать комбинацию клавиш (в идеале вообще одну, но свободных ненужных клавиш уже нет) и сразу попасть в нужное мне окно. Например так:
- Alt+F: Firefox
- Alt+D: Firefox (Private Browsing)
- Alt+T: Terminal
- Alt+M: Калькулятор
- Alt+E: IntelliJ Idea
- и т. д.
Причём, по нажатию, например, на Alt+M я хочу видеть калькулятор вне зависимости от того, запущена ли в данный момент эта программа. Если запущена, то её окну надо передать фокус, а если нет — запустить нужную программу и передать фокус когда она загрузится.
На случаи, которые не покрываются предыдущим сценарием, я хочу иметь универсальные комбинации клавиш, на которые можно легко назначить любые из открытых окон. Например, у меня назначены 10 комбинаций от Alt+1 до Alt+0, которые не привязанные ни к каким программам. Я могу просто нажать Alt+1 и окно, которое сейчас в фокусе, будет получать фокус при нажатии Alt+1.
Под катом описание ещё пары фич и ответ на то, как можно это сделать. Но сразу предупрежу, что подобная кастомизация «под себя» может вызвать сильную зависимость и даже ломку при необходимости использовать Windows, Mac OS или даже чужой компьютер с Linux.
На самом деле, если подумать, то мы не так много программ используем повседневно. Браузер, терминал, IDE, какой-то мессенджер, файловый менеджер, калькулятор и, пожалуй, это практически всё. Нужно не так много комбинаций клавиш, чтобы покрыть 95% повседневных задач.
Для программ, у которых открыто несколько окон, одно из них можно назначить главным. Например, открыто несколько окон IntelliJ Idea, назначенных на Alt+E. В обычных условиях при нажатии на Alt+E будет открываться какое-то окно данной программы, скорее всего то, которое было открыто первым. Однако, если нажать на Alt+E когда одно из окон данной программы уже в фокусе, то именно это окно будет назначено главным и именно ему будет передаваться фокус при последующих нажатиях комбинации.
Главное окно можно переназначить. Для этого комбинацию нужно сначала сбросить, а потом назначить на неё главным другое окно. Для сброса комбинации нужно нажать саму комбинацию, а потом специальную комбинацию сброса, у меня она назначена на Alt+Backspace. Это вызовет скрипт, который отменит назначение главного окна для предыдущей комбинации. А далее можно назначить новое главное окно как это было описано в предыдущем абзаце. Сброс привязанного окна к универсальным комбинациям происходит аналогично.
Вступление получилось длинным, но хотелось сначала рассказать что будем делать, а потом объяснить как делать.
Для тех, кому надоело читать
Если коротко, то ссылка на скрипты в конце статьи.
Но все равно сразу установить и пользоваться не получится. Придётся сначала разобраться как скрипт находит нужное окно. Без этого не получится указать скрипту куда именно нужно передать фокус. И нужно понять что делать, если вдруг подходящего окна не нашлось.
А ещё я не буду заострять внимание на том, как настраивать выполнение скриптов по нажатию комбинаций клавиш. Например, в KDE это в System Settings → Shortcuts → Custom Shortcuts. В других оконных менеджерах такое тоже должно быть.
Знакомство с wmctrl
Wmctrl — консольная утилита для взаимодействия с X Window Manager. Это ключевая программа для скрипта. Давайте бегло глянем на то, как ей можно пользоваться.
Для начала выведем список открытых окон:
$ wmctrl -lx 0x01e0000e -1 plasmashell.plasmashell N/A Desktop — Plasma 0x01e0001e -1 plasmashell.plasmashell N/A Plasma 0x03a00001 0 skype.Skype N/A Skype 0x04400003 0 Navigator.Firefox N/A Google Переводчик - Mozilla Firefox 0x04400218 0 Navigator.Firefox N/A Лучшие публикации за сутки / Хабр - Mozilla Firefox (Private Browsing) .
Опция -l выводит список всех открытых окон, а -х добавляет к выводу название класса (skype.Skype, Navigator.Firefox и т.д). Нам тут понадобится id окна (колонка 1), имя класса (колонка 3) и название окна (последняя колонка).
Можно попробовать активировать какое-то окно с помощью опции -a:
$ wmctrl -a skype.Skype -x
Если все пошло по плану, то на экране должно появиться окно Skype. Если вместо опции -x использовать опцию -i, то вместо имени класса можно будет указать id окна. С id проблема в том, что id окна меняется при каждом запуске приложения и мы не можем знать его заранее. С другой стороны, этот атрибут однозначно указывает на окно, что может быть важно, когда приложение открывает больше одного окна. Об этом чуть дальше.
На этом этапе нам надо запомнить, что мы будем искать нужное окно с помощью regex по выводу wmctrl -lx. Но это не значит, что нам обязательно использовать что-то сложное. Обычно достаточно имени класса или названия окна.
В принципе, основная идея уже должна быть ясна. В настройках глобальных hotkeys/shortcuts для вашего оконного менеджера настраиваем нужную комбинацию на выполнение скрипта.
Как пользоваться скриптами
Для начала надо установить консольные утилиты wmctrl и xdotool:
$ sudo apt-get install wmctrl xdotool
Дальше надо скачать скрипты и добавить их в $PATH. Я обычно кладу их в ~/bin:
$ cd ~/bin $ git clone https://github.com/masyamandev/Showwin-script.git $ ln -s ./Showwin-script/showwin showwin $ ln -s ./Showwin-script/showwinDetach showwinDetach
Если каталога ~/bin не было, то его надо создать и перезагрузиться (или перелогиниться), иначе ~/bin не попадёт в $PATH. Если всё сделано правильно, то скрипты должны быть доступны из консоли и должно работать автодополнение по Tab.
Основной скрипт showwin принимает 2 параметра: первый это regex, по которому мы будем искать нужное окно, а второй параметр это команда, которую нужно выполнить, если нужного окна не нашлось.
Можно попробовать выполнить скрипт, например:
$ showwin "Mozilla Firefox$" firefox
Если Firefox установлен, то его окну должен быть передан фокус. Даже если Firefox не был запущен, он должен был запуститься.
Если получилось, то можно попробовать настроить выполнение команд на комбинации. В настройках глобальных hotkeys/shortcuts добавляем:
- Alt+F: showwin «Mozilla Firefox$» firefox
- Alt+D: showwin «Mozilla Firefox (Private Browsing)$» «firefox -private-window»
- Alt+C: showwin «chromium-browser.Chromium-browser N*» chromium-browser
- Alt+X: showwin «chromium-browser.Chromium-browser I*» «chromium-browser -incognito»
- Alt+S: showwin «skype.Skype» skypeforlinux
- Alt+E: showwin «jetbrains-idea» idea.sh
И т. д. Комбинации клавиш и софта каждый может настроить как ему удобно.
Если все получилось правильно, то по указанным выше комбинациям мы сможем переключаться между окнами простым нажатием клавиш.
Разочарую любителей хрома: обычное окно он инкогнито отличить по выводу wmctrl нельзя, у них одинаковые названия классов и заголовки окна. В предложенных regex символы N* и I* необходимы только для того, чтобы эти регулярки отличались друг от друга и им можно было назначить главными разные окна.
Для сброса главного окна предыдущей комбинации (по факту для regex, которым showwin вызывался в последний раз) нужно вызвать скрипт showwinDetach. У меня этот скрипт назначен на комбинацию клавиш Alt+Backspace.
У скрипта showwin есть ещё одна функция. Когда он вызывается с одним параметром (в данном случае параметр является просто идентификатором), то он вообще не проверяет regex, а все окна считает подходящими. Само по себе это кажется бесполезным, однако таким образом мы можем назначить любое окно главным и быстро переключаться именно к этому окну.
У меня настроены такие комбинации:
- Alt+1: showwin «CustomKey1»
- Alt+2: showwin «CustomKey2»
- …
- Alt+0: showwin «CustomKey0»
- Alt+Backspace: showwinDetach
Таким образом я могу привязать любые окна к комбинациям Alt+1. Alt+0. Просто нажав Alt+1 я привязываю текущее окно к этой комбинации. Отменить привязку могу нажав Alt+1, а затем Alt+Backspace. Или закрыть окно, так тоже работает.
Дальше я расскажу немного технических деталей. Их можно не читать, а просто попробовать настроить и посмотреть. Но я бы всё-таки рекомендовал разобраться в чужих скриптах прежде, чем запускать их у себя на компьютере :).
Как различать разные окна одного приложения
В принципе, самый первый пример «wmctrl -a skype.Skype -x» был рабочий и его можно использовать. Но давайте ещё раз глянем на пример с Firefox, в котором открыты 2 окна:
0x04400003 0 Navigator.Firefox N/A Google Переводчик - Mozilla Firefox 0x04400218 0 Navigator.Firefox N/A Лучшие публикации за сутки / Хабр - Mozilla Firefox (Private Browsing)
Первое окно — обычный режим, а второе — Private Browsing. Эти окна хотелось бы считать разными приложениями и переключаться в них по разным комбинациям клавиш.
Нужно усложнить скрипт, переключающий окна. Я использовал такое решение: вывести список всех окон, сделать grep по regex, взять первую строку с помощью head, достать первую колонку (это будет id окна) с помощью cut, переключить на окно по id.
Тут должна быть шутка про регулярные выражения и две проблемы, но по факту я не использую ничего сложного. Регулярки мне нужны для того, чтобы можно было указать конец строки (символ «$») и отличать «Mozilla Firefox$» от «Mozilla Firefox (Private Browsing)$».
Команда выглядит примерно так:
$ wmctrl -i -a `wmctrl -lx | grep -i "Mozilla Firefox$" | head -1 | cut -d" " -f1`
Тут уже можно догадаться про вторую особенность скрипта: если grep ничего не выдал, значит нужное приложение не открыто и его нужно запустить, выполнив команду из второго параметра. А потом периодически проверять не открылось ли нужное окно, чтобы передать ему фокус. Не буду заострять на этом внимание, кому надо, тот посмотрит исходники.
Когда окна приложения не различимы
Итак, мы научились передавать фокус окну нужного приложения. Но что, если отрыто больше одного окна у приложения? К какому из них передавать фокус? Скрипт выше передаст, скорее всего, первому открытому окну. Однако, мы бы хотели большей гибкости. Хотелось бы иметь возможность запомнить какое именно окно нам нужно и переключаться именно к этому окну.
Идея была такая: Если мы хотим запомнить для комбинации клавиш какое-то определённое окно, то нужно нажать эту комбинацию тогда, когда нужное окно в фокусе. В дальнейшем при нажатии этой комбинации фокус будет отдаваться именно этому окну. Пока окно не закроется или мы не сделаем сброс для этой комбинации скрипта showwinDetach.
Алгоритм скрипта showwin примерно такой:
- Проверить, не запомнили ли мы раньше id окна, которому надо передать фокус.
Если запомнили и такое окно все ещё существует, то передаём фокус ему и выходим. - Смотрим какое окно сейчас в фокусе, и если оно подходит под наш запрос, то запомним его id для перехода к нему в дальнейшем и выходим.
- Переходим хоть к какому-то подходящему окну если оно существует или открываем нужное приложение.
Узнать какое окно сейчас в фокусе можно с помощью консольной утилиты xdotool, преобразовав её вывод в шестнадцатеричный формат:
$ printf "0x%08x" `xdotool getwindowfocus`
Что-то запоминать в bash проще всего создавая файлы в виртуальной файловой системе, находящейся в памяти. В Ubuntu такая подключена по умолчанию в /dev/shm/. Про другие дистрибутивы ничего не могу сказать, надеюсь, что подобное тоже есть. Можно посмотреть командой:
$ mount -l | grep tmpfs
Скрипт будет создавать пустые директории в этой папке, вот такие: /dev/shm/$USER/showwin/$SEARCH_REGEX/$WINDOW_ID. Дополнительно при каждом вызове он будет создавать symlink /dev/shm/$USER/showwin/showwin_last на /dev/shm/$USER/showwin/$SEARCH_REGEX. Это понадобится для того, чтобы при необходимости удалить id окна для определённой комбинации с помощью скрипта showwinDetach.
Что можно улучшить
Во-первых скрипты надо настраивать руками. Наверняка, из-за необходимости вникать и делать много руками, многие из вас даже не попробуют настроить систему. Если бы была возможность просто поставить пакет и настроить все проще, то, возможно, это бы обрело некоторую популярность. А там гляди и в стандартные дистрибутивы запилили бы приложение.
И, возможно, проще можно сделать. Если по id окна можно узнать id процесса, его создавшего, а по id процесса узнать какая команда его создала, то можно было бы автоматизировать настройку. На самом деле я не разбирался, возможно ли то, что я написал в этом абзаце. Дело в том, что лично для меня устраивает то, как оно работает сейчас. Но если кому-то кроме меня весь подход покажется удобным и кто-то его улучшит, то я с радостью буду использовать лучшее решение.
Другая проблема, как я уже писал, в том, что в некоторых случаях окна нельзя отличить одно от другого. Я пока наблюдал такое только с incognito в chrome/chromium, но, возможно, где-то ещё есть подобное. В крайнем случае, всегда есть вариант универсальных комбинаций Alt+1. Alt+0. Опять же, я использую Firefox и лично для меня эта проблема не существенна.
А вот существенная для меня проблема в том, что по работе я использую Mac OS и там ничего подобного я настроить не смог. Утилиту wmctrl поставить вроде бы смог, но она на Mac OS толком не работает. Что-то можно сделать с приложением Automator, но оно так тормозит, что пользоваться им не удобно даже когда оно работает. Настроить комбинации клавиш так, чтобы они работали во всех программах я тоже не смог. Если вдруг кто-то придумает решение — буду рад им пользоваться.
Вместо заключения
Получилось неожиданно много слов для такой, казалось бы, простой функциональности. Хотелось донести идею и не перегружать текст, но я пока не придумал как рассказать проще. Возможно, в формате видео было бы лучше, но тут так не любят.
Я немного рассказал о том, что под капотом скрипта и как его настроить. В подробности самого скрипта не вдавался, но он всего 50 строк, разобраться не сложно.
Надеюсь, что кто-то ещё эту идею опробует и, возможно, даже оценит. Про себя могу сказать, что скрипт был написан года 3 назад и мне это ОЧЕНЬ удобно. Настолько удобно, что вызывает серьёзный дискомфорт при работе с чужими компьютерами. И с рабочим макбуком.
Обзор лучших окружений рабочего стола для Linux

Обзор DE и WM. Окружение рабочего стола (Desktop Environment, сокращённо DE) является «лицом» любой операционной системы.
Те, кто пользуются Windows довольствуются всего одной одним единственным окружением рабочего стола — Windows Explorer (проводник Windows).
C Linux дела обстоят иначе и тут у вас огромный выбор как окружений рабочего стола (DE — Desktop Environment) так и оконных менеджеров (Window Manager, сокращенно WM).
Когда вы переходите с Windows на Linux, то рано или поздно встает вопрос о выборе графического окружения для рабочего стола. И начинающий пользователь зачастую теряется во множестве всяких DE, WM, и не понимает разницы между ними. Кроме того некоторые пользователи установив какой нибудь дистрибутив Linux полагают что окружение рабочего стола может быть только, такой, какую он установил вместе с системой. На самом деле это не так и давайте обо всем по порядку.
Для начала давайте проясним разницу между окружением рабочего стола и оконным менеджером.
Терминология
Давайте для начала нужно определиться с терминологией.
Xorg — если не вдаваться в терминологию, можно назвать базовой программой, которая обрабатывает графические данные.
Современные компьютеры работают в многооконной среде, и позволяют запускать сразу несколько программ и переключаться между ними.
Чтобы дать такую возможность пользователю существуют WM (Window Manager).
Window Manager (Оконный менеджер) — это прослойка между сервером графики и пользователем. Оконный менеджер — это компьютерная программа, управляющая размещением окон на экране и их внешний вид.
Обычно WM нет ни панелей ни всего остального. К примеру в Openbox по умолчанию нет ни одной панели, однако присутствует меню, которое можно вызвать нажав правую кнопку мышки на рабочем столе.
К категории WM относится: Awesome, Openbox, i3
В WM есть конфигурационные файлы в которых вы можете менять значения и изменить нужные вам параметры отображения и работы оконного менеджера.
Чтобы пользователю не заморачиваться со всем этим хозяйством, он может использовать окружение рабочего стола.
Окружение рабочего стола (DE — Desktop Environment)
Desktop Environment или по русски — окружение рабочего стола базируется на Window Manager, но плюс ко всему в него входит различные панели, графические настройки настройки и различных программ.
К этой категории относится: KDE,LXDE,Xfce,Gnome,Cinnamon,MATE,Deepin,Unity.
Давайте теперь рассмотрим более подробно DE и WM
Окружение рабочего стола
Gnome — первая стабильная версия появилась в 1999 году.
GNOME очень хорошая, простая в использовании и привлекательная среда рабочего стола. Не для слабых компьютеров. Для нее существует огромное количество плагинов расширяющих ее функционал.
По умолчанию панель находится слева, но при помощи плагина dush to dock легко переносится вниз. Можно настроить ее прозрачность, добавить различные темы и изменить тем самым оформление.
Хорошо поддается настройкой под свои нужды. При желании вы можете заставить GNOME выглядеть как Mac OS.
KDE (сокращение от K Desktop Environment — окружение рабочего стола К) разрабатывается с 1998 года.
Plasma 5 — это последняя версия KDE.
Это окружение рабочего стола считается одной из самых тяжелых и не рекомендуется для установки на слабых компьютеров.
Многие пользователи описывают KDE как красивое окружение рабочего стола.
Настраивается практически любой аспект поведения рабочего окружения.
На рабочем столе можно разместить виджеты, которые поставляются вместе с KDE Plasma 5
Ключевые улучшения с выходом KDE Plasma 5:
- Расширение средств управления энергопотреблением
- При отслеживании заряда аккумулятора теперь показывается какие приложения работают и которые необходимо закрыть прежде, чем перейти в режим энергосбережения
- Улучшена поддержка Bluetooth
- Добавлен модуль для настройки тачпадов
Многие пользователи считают, что интерфейс KDE во многом похож на окружение Windows, а GNOME ближе к системам Mac.
Это конечно все относительно т.к. практически любое окружение стола можно сделать похожим на ту или иную систему.
Xfce разрабатывается с 1998 года.
Данная среда рабочего стола является одной из самых легких, быстрых и не требовательных к ресурсам. Для нее требуется меньше оперативной памяти, более слабый процессор и подойдет для самых слабых компьютеров.
Настройка системы работает в режиме drag-n-drop (перетащить и отпустить) т.е. настраивается при помощи мыши и перетаскивания. Xfce включает в себя собственный композитный менеджер окон Xfwm.
Xfce основывается на принципах модульности и повторного использования. Он состоит из множества компонентов (модулей), которые составляют полноценное современное рабочее окружение, при этом оставаясь относительно легким. Эти компоненты распределены по разным пакетам, поэтому вы можете выбирать какие из них вам нужны.
Xfce можно назвать «золотой серединой» между требовательности к ресурсам и красотой интерфейса. Здесь нет каких-то супер эффектов, но здесь достаточно всего для тех кто любит минимализм, есть некоторые украшательства (тени, полупрозрачности).
В отличие от GNOME можно настроить прозрачность терминала и убрать с него все окантовки.
Многие пользователи выбирают Xfce из за ее нетребовательности к ресурсам, скорости работ, ее стабильности и возможностью полной адаптация под себя.
LXDE (Lightweight X11 Desktop Environment, что переводится как «Легкая среда рабочего стола») проект запущен в 2006 году.
Участники моей группы вконтакте проводили некоторые тексты с выкладыванием снимков с экрана и заявляли что LXDE чуть пошустрее и менее требовательная в ресурсам, чем Xfce, но разница между ними незначительна.
Разработчики заверяют, что она может работать достаточно нормально, на оборудовании с процессором Pentium II 266 MHz, объемом оперативной памяти 192 MB.
Идеальными решениями для малопроизводительных машин считаются Xfce и LXDE
В LXDE в качестве оконного менеджера используется openbox, который мы рассмотрим чуть позже.
Deepin — появилась в 2009 году. Используется по умолчанию в одноименном дистрибутиве.
Сделан со вкусом, очень современно и красиво.
Все основные настройки производятся в выдвижной панели, которая находится с правой стороны.
В окружении рабочего стола Deepin есть проблема с раскладкой клавиатуры. Тем не менее данная проблема решаема. Кому интересно как это сделать ссылку найдете под этим видео https://vk.cc/6b5NE4 .
MATE разрабатывается 2011 года и является продолжением GNOME 2
Unity (от англ. объединение или единство) разрабатывается с 2011.
Начнем с окружения рабочего стола под названием Unity.
Unity разрабатывается компанией Canonical и установлена по умолчанию в Linux Ubuntu. Первое обнародование произошло в 2011 года с выходом Ubuntu 11.04 Именно тогда Canonical сменили основное окружение рабочего стола с GNOME 2 на Unity
Оболочка Unity одна из самых прожорливых к ресурсам и явно не подходит для слабых компьютеров.
Одна из особенности Unity это расположение панели по левому боку экрана.
Если раньше не было возможности перенести эту панель в другое место рабочего стола, то с выходом Ubuntu 16.04 стало возможно переместить ее вниз.
Это можно сделать при помощи настроек конфигурационных файлов или при помощи программы Ubuntu Tweak.
Unity подверглась значительной критике. Многим не понравилось отсутствие возможности полной кастомизации т.е. настройкой под себя. Поэтому многие пользователи предпочитают другие вариации Ubuntu с другими DE:
Xubuntu — с рабочим столом Xfce.
Libuntu — с рабочим столом LXDE.
Kubuntu — с рабочим столом KDE.
Ubuntu Gnome — с рабочим столом Gnome
В поиске “Dash” встроенном в главном меню осуществлять поиск одновременно по всему компьютеру, включая файлы, папки, видео, музыкальные файлы, а также по интернету.
Ранее поиск в “Dash” посылал данные о поисковых запросах на сервера Canonical. Сейчас эта функция по умолчанию отключена, но в свое время подвергалось жесткой критики в том числе основателя Free Software Foundation Ричардом Столлманом.
Но в целом могу сказать, что Unity сейчас ассоциируется с Ubuntu, имеет свой стиль и оригинальность.
Cinnamon (от англ. cinnamon — корица) разрабатывается начиная с 2012 года и по умолчанию стоит в одном из самых популярных дистрибутиве Linux Mint.
Она основана на среде рабочего стола GNOME и очень хорошо настраиваемая под пользователя. Есть также множество различных тем которые вы можете скачать и установить прямо из нее же.
Это окружение рабочего стола очень легко в освоении и наверное именно поэтому Linux Mint так любят начинающие пользователи.
Тайловые оконные менеджеры
Тайлинг — это от англ. слова tiling — плитка. Это свойство окон располагаться на экране монитора так, чтобы между ними не оставалось пространства. Есть тайловые оконные менеджеры Awsome, i3 и другие.
Тайловые оконные менеджеры ориентированы, как правило, на использование исключительно с клавиатурой или с клавиатурой и мышкой. Для быстроты и простоты использования оконного менеджера, используются горячие клавиши (мышкой результат будет достигнут медленней). Разумные назначения горячих клавиш делают работу быстрой и эффективной. Некоторые сочетания клавиш по умолчанию хороши, но их можно изменить под свои нужд.
Одни из самых популярных тайловых оконных менеджеров это Awesome и i3
Awesome (от англ. Awesome — удивительный, невероятный) — это уникальный оконный менеджер. Разработка ведется начиная с 2007 года.
Его главной особенностью является то, что он невероятно быстрый, занимает считанные килобайты в памяти и делает работу с окнами удобной и продуктивной.
Управление окнами производится как сочетанием клавиш так и мышкой.
i3 (От англ. improved — улучшен и 3 — трехкратно)
В отличие от awesome его настройки записываются в обычном текстовом файле, поэтому его можно настроить без знания программирования.
Управление в основном управляется через клавиатуру.
i3 очень прост в применении, хотя и управляется исключительно при помощи горячих клавиш без использования мыши. Это может показаться очень неудобным, но для тех, кто любит работать быстро и при помощи клавиш это
Среди всех окружений рабочего стола, GNOME и KDE наиболее требовательны к ресурсам компьютера. Полные версии этих сред не только занимают больше места на диске, чем более легкие альтернативы (LXDE и Xfce), но также требуют больше процессорного времени и оперативной памяти для работы
LXDE, Xfce, напротив, являются легковесными средами. Они хорошо работают на более старом оборудовании и в общем потребляют меньше системных ресурсов. Это достигается отказом от возможностей, которые могут быть полезны только небольшому количеству пользователей, и концентрацией на действительно важной функциональности.
Как узнать какой оконный менеджер сейчас запущен linux
Оконная система икс (от англ. X window system, далее — X ) — один из самых больших и успешных проектов в истории компьютерной техники — восходит к 1984 г., когда разработчики двух систем компьютерной графики, претендующих на универсальность — проектов Athena (Массачусетский технологический институт) и W Windowing (Стэнфордский университет) — решили объединить свои усилия. С тех пор практически каждая компания, серьезно занимающаяся графикой, считала своим долгом внести какие-либо разработки в систему, формальным « хозяином » которой в 1987 г. стал вновь созданный X Consortium (ныне Open Group, www.X.org).
С тех пор X прошла через одиннадцать основных релизов и множество версий.
Дальнейшее изложение ориентировано на свободную реализацию X , которая называется XFree86 , поддерживается одноименным партнерством (www.xfree86.org) и воплощает на сегодня версию 4.2 текущего релиза. XFree86 — самая популярная реализация X , она поставляется в составе подавляющего большинства открытых систем (как свободных, так и несвободных) для x86-совместимых компьютеров, поддерживает беспрецедентно широкий спектр оборудования и, благодаря доступности исходных текстов и пользовательской аудитории в десятки миллионов человек, весьма устойчива и хорошо оттестирована, по крайней мере, насколько это возможно для такого разнообразия поддерживаемого оборудования. Несмотря на то, что исторически цифры « 86 » в названии пакета относятся к соответствующему семейству процессоров от Intel, современные версии XFree86 реализованы для большинства других популярных процессоров. XFree86 доступен и для некоторых альтернативных архитектур ОС , включая Microsoft Windows NT .
Большинство из того, о чем будет говориться в последующих разделах, справедливо для любой реализации X на любом оборудовании и под любой ОС , список которых можно найти на www.X.org.
Цветной бутерброд
То, что пользователю, сидящему за монитором, представляется сплошной графической операционной средой, реализовано как многослойный бутерброд технологий.
Непосредственно с оборудованием (видеосистемой, устройствами ввода и динамиком) работает X-сервер. Эта программа захватывает оборудование и предоставляет его возможности другим программам как ресурсы (собственно, именно поэтому она и называется сервером) по особому протоколу, который так и называется, X -протокол. Перечисленное оборудование в совокупности называется X-терминалом (аппаратным X -терминалом называется и специализированный компьютер, на котором исполняется исключительно X -сервер).
Здесь сразу видно отличие X от большинства самодельных систем графики, используемых в альтернативных системах: взаимодействие X -сервера с многочисленными программи-клиентами происходит по специфицированному протоколу, который может туннелироваться через TCP / IP и, соответственно, клиенты и сервер могут исполняться на разных узлах Сети. Это означает, что одни и те же программы могут эксплуатироваться в разных топологиях, включая совокупность автономных рабочих станций (персональных компьютеров), совокупность рабочих станций без данных или бездисковых рабочих станций (локальная сеть), многопользовательскую систему с X -терминалами (или какую-либо смешанную топологию).
Еще одним ресурсом, который предоставляет X -сервер, являются шрифты. Оперировать шрифтами он может самостоятельно, либо с помощью другой программы, которая обеспечивает масштабирование шрифтов — фонт-сервера (от англ. font — шрифт).
Большинство пользователей, установив систему, получают в свое распоряжение готовую графическую среду. Попробуем разобраться в ее устройстве « по слоям ».
« Чистая » X
На рис. 2.1 показана « чистая » оконная система X — когда запущен только X -сервер и никаких приложений — то, с чем большинство пользователей никогда не сталкивается. Запустить ее обычно можно, подав команду: X & .
Рисунок 1. Чистая X

Мы видим традиционный серый экран с не менее традиционным курсором в виде буквы « x ». Используя мышь или другое координатное устройство, курсор можно перемещать по экрану. На нажатие кнопок мыши и клавиш никакой видимой реакции не следует. И невидимой тоже — сервер готов передавать эти сигналы своим клиентам, а клиенты пока не запущены. Хотя на самом деле некоторые комбинации клавиш X перехватывает и обрабатывает. Это Zap ( Ctrl — Alt — Backspace ) — завершение работы сервера (если эта возможность не запрещена при конфигурации), Zoom ( Ctrl — Alt — + и Ctrl — Alt — — ) — « горячее » переключение доступных видеорежимов. В некоторых ОС (Например, GNU/Linux ) Ctrl — Alt в сочетании с функциональной клавишей освобождает оборудование и передает его на время соответствующей виртуальной консоли — запущенной в неграфическом режиме (обычно, vga-режиме) программе, позволяющей пользователю зарегистрироваться в системе и получить доступ к командной строке оболочки.
Рисунок 2. xterm в среде X

Воспользуемся последней возможностью, перейдем на консоль и запустим первое клиентское приложение: программу xterm (рис. 2.2). На экране X появилось окно, а в окне можно видеть интерфейс клиентского приложения. В данном случае интерфейс текстовый, а приложение представляет собой эмулятор терминала, на котором запущена диалоговая оболочка системы по умолчанию. С эмулятором можно делать все то же, что и с обычным терминалом: издавать команды, получать результат и запускать другие программы. Если программы текстовые (строчные или оконные), исполняться они будут в том же окне, а если графические (как и сам xterm ) — в отдельных окнах.
Рисунок 3. xclock в среде X

Запустим программу xclock (рис. 2.3). При ее запуске мы использовали несколько параметров, задающих геометрию (местоположение и размер) вновь порождаемого окна, цвет его фона и шрифта по умолчанию, толщину и цвет рамки. Эти (и некоторые другие) параметры типичны для программ, построенных на основе графической библиотеки X Toolkit . Значения параметров, заданные при вызове программы, могут быть перекрыты самим запускающимся приложением, кроме опции геометрии. Дело в том, что окно выделяется клиентскому приложению при запуске, и все доступные ему ресурсы этим окном и ограничены — это свойство X -протокола. Переместить окно или изменить его размер средствами « чистой » X невозможно.
Запустив несколько экземпляров того же xterm (и почитав документацию) можно обнаружить, что и « чистая » X умеет не так мало. Например, оперирует буфером обмена текстом между приложениями и предоставляет текстовым приложениям такой ресурс, как полосу прокрутки (полоса сбоку окна, при помощи которой можно листать текст вверх или вниз, щелкая по ней левой и правой кнопками мыши соответственно, — это наследие проекта Athena ).
Итак, ключевой компонент графической платформы — X -сервер:
- захватывает оборудование;
- создает по запросу других программ (которые в этой терминологии называются X-клиентами) окна;
- предоставляет другим программам возможность работы в окнах, т. е. вывода информации в эти окна и обработки сигналов от устройств ввода (клавиатуры и мыши или другого координатного устройства), когда окно, назначенное программе, является активным. Предоставление ресурсов возможно в том числе и через сеть, когда клиент и сервер работают на разных компьютерах (узлах).
В среде, образуемой X -сервером, окно, выделяемое клиенту, является фиксированным: его геометрия (местоположение на экране и размер) задается при запуске клиента и сохраняется в течение всего сеанса работы с этим клиентом. Есть ли польза от системы, работающей с фиксированными окнами? да, это вполне соответствует цели создания специализированных систем с графическим интерфейсом пользователя. Примером такой системы может служить терминал, позволяющий получать справки о расписании поездов и стоимости проезда, установленный на вокзале. Однако этих возможностей совершенно недостаточно для универсального « настольного » применения компьютера.
При универсальном применении компьютера характерна поочередная работа с различными программами (иногда достаточно большим их количеством), причем пользователь может отрываться, допустим, от редактирования текста, чтобы поработать с иллюстрацией при помощи другой программы, прочитать почту или заглянуть на интернет-страницу, затем возвращаться к редактированию текста и т. д. Эти возможности обеспечивает другая программа — менеджер окон, представляющая собой следующий « слой » в графической среде пользователя.
Менеджеры окон
Для одновременной и поочерёдной работы с разными программами, требуется возможность управлять окнами (с помощью клавиатуры или мыши), т. е. возможность изменять « на лету » их геометрию (положение и размеры), а также (обычно не относимое к геометрии) положение в воображаемой « стопке » окон — от этого зависит, какое из окон будет « верхним » (видимым полностью), если окна перекрывают друг друга на плоскости экрана.
Управление окнами и составляет основную функцию оконного менеджера (устоявшийся англоязычный термин window manager, относящийся к этому классу программ, мы будем передавать далее словосочетанием-калькой « оконный менеджер », которое, впрочем, не представляется особенно удачным, так же, как и встречающиеся в литературе « менеджер окон », « администратор окон » и « диспетчер окон »).
Технически ограничение на изменение геометрии однажды выделенного X -сервером окна преодолевается оконным менеджером за счёт того, что ему в качестве окна выделяется весь экран. Окно во весь экран может быть названо корневым, по аналогии с корневым каталогом в файловой системе. На самом деле, менеджер окон — не единственная программа, способная работать с корневым окном; например, входящая в комплект поставки xsetroot позволяет установить цвет фона или поместить на него рисунок.
Прикладным программам, таким образом, выделяются далее уже не окна собственно X , а окна оконного менеджера. Изменение положения окна в подавляющем большинстве случаев ничего не требует от программы-клиента, однако желательно, чтобы программа была достаточно « сообразительной », чтобы изменить свое поведение при изменении размеров выделенного ей окна « на лету ». Это справедливо для большинства, но не для всех программ (в частности, этого « не умеют » многие старые программы и некоторые компьютерные игры).
В свою очередь, и оконный менеджер может быть достаточно « умен », чтобы понять, что программа не реагирует на изменение геометрии окна, и запретить пользователю изменять размеры окна для данной программы (чтобы он не оказался в ситуации, когда ему видна лишь часть области вывода программы или наоборот, часть окна прикладной программы пуста). Однако такое решение может привести к весьма дискомфортным ситуациям (например, если при запуске программы ее окно оказывается больше экрана) [1] .
Менеджеров окон существует превеликое множество — под любой набор задач, которые может решать графическая многооконная система. Их настолько много, что выбрать какой-нибудь в качестве « типичного представителя семейства » затруднительно. Поэтому выберем один из самых развитых — Enlightenment .
« Просвещение » (англ. enlightenment, www.Enlightenment.org) создано Карстеном Хайцлером и Джеффом Харрисоном (Carsten Haitzler, Geoff Harrison) и его текущая версия — 0.16.5. До 2000 г. он был основным менеджером окон в популярной среде GNOME , затем уступив это место менее функциональной, но более быстрой « Рыбе-пиле » ( Sawfish ). Он продолжает оставаться GNOME -совместимым, и многие пользователи этого популярного оконного менеджера предпочитают его, хотя и без GNOME у Enlightenment поклонников хватает.
Рисунок 4. Оконный менеджер Enlightenment

Запустим Enlightenment (рис. 2.4), набрав в командной строке xterm enlightenment & . Первое, что мы видим — это появившиеся вокруг окна нашего xterm элементы оформления: рамка и строка заголовка с кнопками. Окно теперь можно перемещать по экрану, « ухватив » за заголовок, масштабировать (изменять размер), « взяв » за бок или за угол, максимизировать, минимизировать или закрыть, нажав соответствующую кнопку. Спрашивается, что еще можно делать с окном?
Рисунок 5. Оконное меню Enlightenment

Вопрос не праздный. Нажав на левую кнопку в заголовке, получаем неожиданно разнообразное меню таких действий (рис. 2.5). Оказывается, его можно еще уничтожить (Annihilate), поднять/опустить (Raise/Lower), оттенить/растенить (Shade/Unshade) приклеить/отклеить (Stick/Unstick) и выполнить еще массу действий, для которых потребовались отдельные меню. Набор этих действий зависит от конкретного менеджера окон (и Enlightenment — один из самых богатых возможностями), а то, какие из них выведены в строку заголовка отдельными кнопками — от того, как он настроен (пользователем или по умолчанию).
Базовая (а также расширенная) функциональность оконных менеджеров доступна пользователю прежде всего за счет введения в интерфейс так называемых виджетов (от англ. widgets, сокращение от window gadgets, « оконные приспособления »). Виджеты — это рамки, кнопки, меню и пр., которые служат « органами управления » окна. Технически (в терминах оконной системы X ) виджеты представляют собой отдельные окна, примыкающие к окну прикладной программы и, как правило, перемещающиеся вместе с ним.
Рисунок 6. Виджеты

Обрамление окна обычно составляют следующие элементы:
Рамка, окружающая окно
При « буксировке » рамки мышью окно изменяет свой размер. Иногда для изменения размера окна предназначены только выделенные « уголки » рамки, представляющие собой отдельные виджеты.
Часто совпадает с одной из (обычно, верхней) сторон рамки. В полосе заголовка может содержаться название программы или запустившая программу команда, а также другая информация, специфичная для окна. При « буксировке » полосы заголовка перемещается все окно. Со « щелчками » различными кнопками мыши на полосе заголовка также могут быть связаны различные действия по управлению окнами.
Кнопки управления окном
Часто вынесенные на полосу заголовка или в другое место рамки кнопки позволяют выполнить с ним такие действия, как закрытие (часто сопровождающееся выходом из программы, открывшей окно), максимизация (разворачивание окна на весь экран), минимизация/сворачивание, вызов меню управления окном, которое может содержать весьма обширный репертуар других действий.
Детали реализации обрамления окна могут быть весьма различными в зависимости от конкретного оконного менеджера и его настроек.
Откуда берутся такие ресурсы, как виджет, их декор и способ поведения? Конечно, менеджер окон может содержать их в себе. Но такой подход не очень характерен для открытых систем, одним из принципов разработки которых является компонентность. Поэтому виджеты и их функции обычно объединяются в стандартные библиотеки (toolkits), которые могут быть использованы множеством различных программ. Большинство развитых менеджеров окон, менеджеров рабочего стола и разработанных специально для них приложений можно сгруппировать по библиотекам виджетов, с опорой на которые они разработаны.
С точки зрения пользователя виджеты, составляющие обрамление окна, часто воспринимаются как его часть. Однако не следует забывать, что внутри окна (содержимым которого управляет уже прикладная программа, а не менеджер окон) зачастую тоже есть свои виджеты: кнопки, полосы прокрутки, переключатели, меню и т. п. В общем случае, используемые оконным менеджером и прикладной программой библиотеки виджетов могут и не совпадать.
Собственно, управление окнами — основная функция оконного менеджера, и на этом его функциональность может и заканчиваться. Однако большинство из них выполняют по крайней мере еще одну функцию.
Рисунок 7. Пейджер

вы уже обратили внимание на то, что при запуске Enlightenment на экране появилось еще одно окно. Это так называемый пейджер (pager), на рис. 2.7 он изображен крупным планом. На пейджере представлена миниатюрная копия экрана, обновляющаяся в режиме реального времени, причем, если подвести курсор к изображению отдельного окна, оно увеличивается и рядом высвечивается название приложения, запущенного в нем. Но почему экран занимает только четверть окна пейджера? Потому что оконный менеджер позволяет оперировать « виртуальным » столом (от англ. virtual desktop, также рабочим столом), по размеру превышающим физический экран, а пейджер — одно из средств перемещения физического экрана по рабочему столу. Enlightenment позволяет создавать до 64 экранов на рабочем столе.
Менеджер окон, который помимо управления окнами обладает рядом дополнительных функций, может использоваться в качестве операционной графической среды пользователя, предоставляющей полный спектр возможностей для параллельной работы с несколькими задачами. Наиболее часто такими дополнительными функциями являются следующие:
Минимизация/сворачивание окон и управление свернутыми окнами
Работа на экране, « захламленном » десятком различных окон, может быть дискомфортной, и крайне полезна возможность свернуть (минимизировать) окно со временно неиспользуемой программой. Для того, чтобы средствами графической среды можно было окно затем развернуть, оно и в свернутом состоянии должно каким-то образом отображаться. Существует несколько относительно распространенных способов отображения свернутых окон. Например, « на столе » может оставаться полоса заголовка свернутого окна, по щелчку на которой оно вновь разворачивается. Свернутым окнам могут соответствовать пиктограммы (иконки, значки) на поверхности рабочего стола или в специально отведенном для этого окне (панели управления). Свернутые окна могут отображаться как пункты общего или специального меню (см. ниже).
Управление несколькими рабочими столами
Практика показывает, что для многих продвинутых пользователей, которые осваивают открытые системы, уже имея опыт работы в характерных для ПК альтернативных системах, именно возможность работать на нескольких рабочих столах оказывается решающим плюсом оконной системы X . Действительно, переключение между виртуальными рабочими столами позволяет организовать комфортную работу со множеством программ даже на мониторах с относительно низким разрешением (1024х728, 800х600) и физическими размерами (17, 15-дюймовыми). В иных условиях комфортность работы существенно снизилась бы, или настоятельной необходимостью стало бы приобретение более крупного и емкого монитора (что зачастую влечет за собой необходимость смены графической карты и прочих недешевых мероприятий). Все современные оконные менеджеры поддерживают виртуальные рабочие столы, правда называются они везде по-разному: столы, рабочие области или экраны. До предела (чтобы не сказать, до абсурда) эта функциональность развита в оконном менеджере Enlightenment , который позволяет организовать до 64 экранов на рабочем столе, при этом рабочих столов также может быть более одного (точнее, до 32). Трудно представить, зачем может понадобиться две тысячи с лишним отдельных экранов (как правило, четырех экранов хватает с избытком для любых практических задач), однако возможности приема демонстрируются этим в полный рост.
Быстрый запуск команд
Возможность быстрого запуска предуготовленных команд обычно ассоциируется с общим меню (главным меню), вызываемым щелчком мыши на особом виджете, не связанном с прикладными окнами, или в свободной от прикладных окон области экрана.
Настройка внешего вида и поведения среды
Поведение — реакция отдельных виджетов на операции с ними, модель фокусировки (способ переключения активного в данный момент окна, с которым связан ввод с клавиатуры и мыши) и т. п. Поведение и внешний вид оформления окон, а также наличие на экране общих виджетов, не связанных с конкретными прикладными окнами, обои (цвет фона или изображение в корневом окне) и т. п. могут варьировать в очень широких пределах. Иногда возможности такой настройки считают некими « архитектурными излишествами », однако более взвешенной является точка зрения, согласно которой в хорошем визуальном дизайне (так же, как и в хорошей архитектуре) ничто не является излишеством. В частности, в школе программы эксплуатируются на широком спектре оборудования с весьма разными характеристиками и разного качества, причем используются они широким кругом людей с различными психофизическими особенностями, как в пределах нормы, так и связанных со здоровьем, и игнорировать возможности настройки нельзя даже уже исходя из гигиенических соображений.
Рисунок 8. Меню настройки Enlightenment

Пример возможностей настройки менеджера окон дает тот же Enlightenment . Его меню настройки можно увидеть, щелкнув правой кнопкой мыши на фоне экрана (рис. 2.8). Исследовав возможности настройки, можно обнаружить, что сказанное выше о способах работы с этим менеджером окон весьма условно, потому что поменять можно буквально все, от декора виджетов до количества и функций элементов оформления окон и их реакции на различные действия.
Лишь один пример: сколько способов визуализировать перемещение окна вы знаете? Разработчики Enlightenment придумали целых шесть, включая фантастический « полупрозрачный ». Настройки и расширения Enlightenment можно объединять в темы (англ. themes) и обмениваться ими.
выше при характеристике тех или иных (предположительно, общих) характеристик оконных менеджеров чаще обычного употреблялись слова « обычно », « как правило », « может » и т. п. Это связано с чрезвычайным разнообразием решений на базе распространенных оконных менеджеров. Ниже самые распространенные из них характеризуются более подробно и определенно.
Оконные менеджеры BlackBox и FluxBox
BlackBox — один из самых компактных и быстродействующих оконных менеджеров. Он позволяет эффективно организовать работу на рабочем столе, не « захламляя » его ненужными ссылками и не расходуя экранное пространство на отображение громоздких элементов оформления.
Рисунок 9. Оконный менеджер BlackBox

Наряду с базовой функциональностью, BlackBox предоставляет (факультативно) панель, содержащую кнопки переключения между рабочими столами (по умолчанию их четыре) и заголовки открытых окон. Общее меню вызывается щелчком правой кнопкой мыши на свободном от окон месте рабочего стола. Меню (или любое из вложенных в него меню) щелчком по заголовку может быть превращено в окно, остающееся на экране до явного его закрытия щелчком на соответствующей кнопке.
По умолчанию на полосе заголовка каждого окна присутствуют кнопки сворачивания (сворачивание можно выполнить также двойным щелчком на самом заголовке), максимизации и закрытия окна. Свернутое окно присутствует на экране в виде полосы заголовка, развернуть его можно повторным двойным щелчком на полосе заголовка или из меню Workspaces (рабочие области), доступного по щелчку средней кнопкой мыши на свободном от окон месте рабочего стола. Это же меню позволяет перейти на другой стол, добавить или удалить стол из рабочего пространства.
BlackBox поддерживает различные модели фокусировки ввода. Фокусировка по щелчку мыши (от англ. click to focus) позволяет реализовать стиль работы, привычный для пользователей KDE или Microsoft Windows : окно становится активным (принимающим текущий ввод с клавиатуры и от мыши) после щелчка на нем. Активное окно автоматически становится верхним (видимым полностью, даже если оно частично перекрывается с другими окнами). Небрежная фокусировка (от англ. sloppy focus) предполагает активизацию окна при попадании на него курсора мыши (окно при этом не « всплывает » автоматически наверх).
Наряду с панелью и конвертируемыми в дополнительные окна-панели меню, BlackBox реализует еще один автономный виджет — так называемую щель (англ. slit). Щель располагается на краю видимого экрана и может содержать маленькие (без обрамлений) окна специализированных программ (их существует около десяти), индицирующих какие-либо состояния среды или позволяющих быстро выполнить часто исполняемые действия.
На основе BlackBox созданы два более развитых оконных менеджера — OpenBox и более популярный FluxBox .
Внешний вид BlackBox , FluxBox и OpenBox легко настраивается с помощью механизма тем рабочих столов.
Оконный менеджер WindowMaker
WindowMaker ( WM ) — это свободная реализация (в рамках проекта GNUStep) концепций NextSTEP — первой получившей более или менее широкую известность универсальной графической среды пользователя. За недоступностью оригинальной NextSTEP для современных платформ, познакомиться с WM полезно и поучительно вне зависимости от того, собираетесь ли вы с ним работать. Это позволит увидеть исходную точку развития графических сред и оценить продуктивность (или непродуктивность) того, с чем эти идеи стали ассоциироваться со временем.
Рисунок 10. Оконный менеджер WindowMaker

Основным автономным виджетом WM , как и NextSTEP , является пирс прикладных программ, представленный при запуске пиктограммой со скрепкой. При запуске любой корректной (с точки зрения WM ), а также некоторых некорректных программ, кроме ее окна на экране появляется ее пиктограмма. Если « пришвартовать » эту пиктограмму к пирсу, она там и останется, позволяя запускать эту программу вновь и вновь простым щелчком по ней — это разработанный для NextSTEP интегрирующий интерфейс.
WM позволяет работать с несколькими рабочими столами (переключение по умолчанию при помощи клавиш Alt — n или через меню, доступное по щелчку правой кнопкой мыши на свободном месте рабочего стола). WM очень гибко настраивается, как в отношении внешнего вида, так и в отношении поведения, причем большая часть настроек доступна из программы Wprefs.app , запускаемой по щелчку на пиктограмме с изображением ступеньки.
Оконный менеджер IceWM
IceWM — простой оконный менеджер, его очень часто выбирают пользователи, переходящие с Microsoft Windows или OS/2 , поскольку он достаточно точно повторяет основные черты привычной для них графической рабочей среды.
Рисунок 11. Оконный менеджер IceWM

Из автономных виджетов прежде всего стоит отметить панель с кнопкой, вызывающей главное меню (подобно тому, как это делает кнопка в Microsoft Windows , GNOME или KDE ). С помощью панели можно также управлять текущим сеансом и настраивать IceWM . Впрочем, основное меню также доступно и по щелчку правой кнопкой мыши на свободном месте рабочего стола, что более привычно для пользователей WindowMaker , Sawfish , BlackBox или Enlightenment .
Панель также содержит список запущенных программ (включая те, окна которых минимизированы), на нее можно вывести и мини-терминал, позволяющий оперировать командной строкой. Для выполнения любого действия может быть назначена специальная клавиатурная комбинация.
IceWM также позволяет работать с множеством рабочих столов (рабочих мест), которые нумеруются или именуются пользователем.
Интегрированные графические среды
Существует два подхода к тому, как можно достроить оконную систему до полнофункциональной среды, позволяющей пользователю решать все (или почти все) его практические задачи. Во-первых, можно расширить функциональность менеджера окон, добавив в него недостающие возможности. Чего не хватает в оконном менеджере до полнофункциональной среды? Возможности запускать программы и утилиты. Достигается это обычно при помощи организации специального меню. С примером этого подхода мы уже познакомились в предыдущем разделе: этим путем пошли разработчики Enlightenment и ряд других проектов. Во-вторых, можно добавить в « графический бутерброд » еще один слой — менеджер рабочего стола — работающий « поверх » менеджера окон и использующий функциональность последнего. Этим путем идут команды разработчиков GNOME и KDE .
С точки зрения пользователя нет четкой границы между менеджерами окон с расширенной функциональностью и менеджерами рабочего стола, работающими « поверх » менеджера окон, поскольку они обеспечивают одну и ту же функциональность и нередко даже графически организованы сходным образом. Оба варианта предоставляют пользователю возможность работать в графической среде (desktop environment).
Запуск графической среды (точнее, « бутерброда » из оконной среды X , оконного менеджера и менеджера рабочего стола) в открытой операционной системе можно сравнить с запуском Microsoft Windows в MS-DOS [2] .
Однако, сходство заканчивается, не успев начаться. MS-DOS — это однозадачная и однопользовательская система, и запущенная оболочка захватывает все ее ресурсы. Из-за неполноценности ОС оболочке приходится брать на себя несвойственные ей функции (например, имитацию многозадачности), с которой она справляется плохо (например, « зависание » одной программы вполне может привести к неработоспособности всей системы).
При запуске графической среды под полноценной ОС , она, с точки зрения последней, представляет группу обычных процессов, управление которыми производится общесистемными средствами. Точно так же, общесистемными средствами производится и управление процессами, запускаемыми « из-под » этой графической среды. Более того, поскольку платформой для запуска конкретной среды является изначально сетевая среда X , прикладная программа даже может запускаться на другом компьютере.
Среда отнюдь не монополизирует использование компьютера; параллельно с ее работой продолжает исполняться множество служебных системных процессов; с других терминалов (если система многотерминальная) могут запускаться другие программы или даже другие графические среды (или дополнительные экземпляры той же среды).
Интегрированная графическая среда предполагает не только единство оформления, но и трактовку объектов в рабочем пространстве (окон, файлов, пунктов меню и т. п.) как физических объектов, которые можно перемещать, выбрасыать в « корзину » и т. д. Однако сколько-нибудь последовательной теории интегрированных графических сред не существует. Изучая отдельные среды в динамике их развития, можно, тем не менее, выделить несколько общих черт.
- Они опираются на определенный интерфейс разработчика (API), состоящий из библиотек, доступных также разработчикам прикладных программ (будь то MS Windows API для Microsoft Windows , Motif для CDE , Qt для KDE или GTK+ для GNOME );
- Они реализуют элементы объектной метафоры: файлы, процессы (их потоки ввода-вывода) изображаются как отдельные объекты, на них можно фокусироваться и выполнять с ними различные действия, их состояния и изменения этих состояний также могут визуализироваться или озвучиваться. Целостная объектная метафора своей реализации не нашла (и, видимо, последовательно объектная среда была бы крайне неудобной в использовании).
- Они реализуют единообразные элементы управления (виджеты), зачастую не только в оформлении отдельных окон, но и в их содержимом.
- Они содержат те или иные элементы управления, не привязанные к отдельным окнам прикладных программ (общие меню, панели управления, поверхность стола и т. п.).
- Они позволяют согласованно изменять свойства интерфейса образующих среду программ (менеджера окон, менеджера рабочего стола, приложений, разработанных специально для данной среды).
- Они реализуют буфер обмена, позволяющий передавать типизованные данные от программы программе (оконная система X содержит буфер, позволяющий передавать данные лишь простого текстового типа).
- Они реализуют возможность « перетаскивания » при помощи мыши (drag’n’drop) объектов или данных между окнами одной программы или разных программ.
Однородность опыта при работе в интегрированных средах и связанная с нею привычность (иногда ошибочно называемая « интуитивностью », хотя она не имеет отношения к философскому и психологическому понятиям интуиции) позволяют при освоении нового инструмента-программы сосредоточиться на ее прикладной логике, не задумываясь и специально не фокусируя внимания на приемах работы, общих для всех инструментов. Это позволяет новому пользователю гораздо быстрее осваивать прикладные программы (делает более « крутой » пресловутую кривую обучения) [3] .
Как ни парадоксально, основной недостаток работы в интегрированной среде является оборотной стороной основного достоинства: жестко закрепленные навыки мешают при выходе за ее пределы. Конечному пользователю, ограниченному опытом работы в одной среде, недостает « стереоскопичности » видения, глубины понимания; элементы эргономической логики могут напрямую ассоциироваться с определенными визуальными элементами и « жестами », с помощью которых подаются команды.
Общеизвестны сложности, с которыми сталкиваются люди, несколько лет пользовавшиеся Mac OS или Microsoft Windows при необходимости поработать в другой (пусть даже и весьма схожей) среде. Подобная ригидность опыта может формироваться и при работе в любой из свободных сред, хотя, как правило, пользователь в них не ограничен прикладными программами, специально разработанными для данной среды и делящими с ней наборы элементов интерфейса. В отличие от сред, специфических для ПК , опыт пользователя открытых систем изначально более разнообразен.
Поэтому крайне полезным представляется знакомство учащихся с разными средами уже на начальном этапе освоения графических интерфейсов. Это не обязательно должны быть разные интегрированные среды, но само представление о том, что один и тот же результат может достигаться с помощью разных интерфейсных средств, должно быть передано обязательно. В общем случае это возможно и в рамках одной интегрированной среды из числа рассматриваемых ниже — и KDE , и GNOME в высшей степени гибки в отношении настройки внешнего вида и поведения. Эта гибкость также весьма полезна для обеспечения доступности и максимально достижимого комфорта учащимся с физиологическими особенностями и физическими недостатками (дальтонизмом, слабым зрением, ограниченной подвижностью или расстроенной координацией движений и т. п.).
На сегодня существуют и развиваются две свободные интегрированные графические среды общего назначения: KDE и GNOME . Они входят в поставку большинства стандартных (открытых) ОС , как свободных, так и несвободных. Хотя GNOME на полгода моложе KDE , мы начнем обсуждение именно с GNOME .
GNOME
Рисунок 12. Рис. 2-12

GNOME ( GNOME , GNU Network Object Model Environment — « Среда ГНУ , основанная на модели сетевых объектов », но также и « Образцовая среда для сетевых объектов ГНУ ») — один из самых амбициозных и масштабных проектов в программистском сообществе.
Кроме реализации функционально полной графической среды (возможно, уместнее говорить о сенсуальных средах, учитывая то, что звук стал их полноправной частью), GNOME претендует на то, чтобы полностью реализовать спецификации промышленной платформы сетевого взаимодействия CORBA и полностью абстрагировать слой менеджера рабочего стола (или графической среды) от низлежащего слоя управления окнами (менеджера окон).
GNOME поддерживает ряд оконных менеджеров, среди которых: Sawfish (оконный менеджер по умолчанию), Enlightenment , IceWM , WindowMaker , AfterStep и FVWM2 , совместимые с GNOME , впрочем, в разной степени.
Сегодняшняя версия GNOME ( GNOME 2.4) — полноценная интегрированная среда, включающая реализацию повседневно необходимых функций и позволяющая использовать сторонние решения для реализации функциональности, которая в ней отсутствует.
GNOME использует один из самых развитых интерфейсных пакетов GTK+ , реализованный для разных платформ. Над ним надстраивается масса компонентов и библиотек, обеспечивающих сетевую функциональность, интерфейсы к различным языкам программирования, работу со звуком через механизмы ОС и пр. Сам GNOME стремится оставаться мобильным и доступным во всех открытых системах. Он стабильно работает в GNU/Linux , BSD , AIX и Solaris ; последнее обстоятельство способствовало поддержке разработки GNOME , которую оказывает Sun Microsystems через созданный в 2001 г. году « Фонд GNOME », среди учредителей которого также крупнейшие поставщики свободных ОС .
С пользовательской точки зрения GNOME предстает как набор базовых компонентов интерфейса и аплетов, утилит и прикладных программ. К базовым компонентам относятся менеджер файлов и поверхности стола Наутилус ( Nautilus ), панели управления и меню GNOME Panel и центр управления ( Gnome Control Center ).
Менеджер файлов Nautilus позволяет отображать содержимое файлов и каталогов в окнах и выполнять над файлами обычные действия (удаление, переименование, копирование и перемещение и т. п.), а также осуществлять предварительный просмотр многих типов данных. Nautilus эффектен, но работа с ним не более эффективна, чем с прочими броузерами файлов, включаемыми обычно в графические среды (менеджер файлов CDE или Microsoft Windows Explorer ).
Помимо отображения содержимого каталогов в окнах, Nautilus также может отображать один из каталогов на поверхности рабочего стола: размещенные на нем иконки как бы приклеены к монитору, и при смене текущего экрана остаются на том же месте относительно наблюдателя (так же, кстати, ведут себя и открытые окна, если их « приклеить »).
Поддерживается широкий спектр операций переноса мышью (drag’n’drop), причем « перетаскивать » можно не только объекты (файлы, пункты меню и т. п.), но и некоторые их свойства: так, можно « взять цвет » в окне выбора цвета и перенести его на панель, которая воспримет его. Есть даже операции, позволяющие назначить один объект свойством другого: например, если на панель « перетащить » не цвет, а файл с картинкой, последняя станет ее фоном. Переносить файлы между окнами Nautilus , на рабочий стол и панели можно практически без ограничений.
Уже упомянутые панели являются, наряду с менеджером файлов, важнейшей составной частью интерфейса GNOME . Панелей может быть неограниченное количество. Панель может быть двух типов: панель-меню (menu panel) и объектная панель (object panel). Первая из них содержит пункты меню и может содержать пиктограммы, а вторая — только пиктограммы. Последняя может быть краевой (edge), выравненной (aligned), скользящей (sliding) или плавающей (floating), но это скорее свойство панели (которое можно менять « на ходу »), определяющее особенности ее поведения, чем тип.
Внешний вид и поведение панелей является в высшей степени конфигурируемым. Пользователь может задавать как глобальные предпочтения (анимация движения панелей, отображение панельных объектов и пр.), так и индивидуальные предпочтения для каждой из них (ее тип и положение на экране, ширина, возможность автосокрытия и принудительной минимизации, цвет и фоновое изображение и т. п.) Разумеется, пользователь может наполнять панели теми объектами, которые ему нужны.
На панелях могут присутствовать объекты пяти типов:
- Аплет (applet, « приложеньице ») — интересный тип панельного объекта, демонстрирующий то, что он не обязан быть представлен статической картинкой. Это программа, места в панели которой достаточно, чтобы отображать какую-нибудь полезную (или забавную) информацию или даже принимать клавиатурный и/или координатный ввод. С GNOME поставляется масса аплетов, отображающих всякую полезную информацию (состояние ресурсов и статус сети, например) или позволяющих осуществить нетривиальные действия (например, mini commander , позволяющее набрать команду, не запуская терминала). Важными аплетами являются путеводитель по столу (Desktop Guide) и список задач (Task List), позволяющие переключаться между виртуальными экранами и активизировать окна запущенных программ, соответственно.
- Пускатель (launcher) ассоциирован с приложением или командой, которые исполняются по щелчку на его пиктограмме в панели.
- Выдвижной ящик (drawer) — это кнопка, открывающая другую панель, перпендикулярно первой — некий аналог подменю в меню, который можно наполнить всевозможными аплетами.
- Специальные объекты — это те же аплеты, но выполняющие функции, которые другими средствами « достать » почему-либо нельзя (запереть экран, выйти из GNOME или запустить программу « вручную »). В качестве специальных объектов исполняются и программы, которые не были написаны специально для GNOME , но могут, тем не менее, осуществлять вывод в панель — поглощенные программы (swallowed applications).
- Наконец, объект-меню раскрывает меню.
За работу системы меню, как и за работу панелей, отвечает компонент GNOME Panel , и это не случайно: разница между панелью и меню в большей степени декоративная, чем сущностная. Любое меню можно зафиксировать на экране, и оно превратится в подобие панели-меню (только вертикальное, а не горизонтальное, и с меньшими возможностями настройки).
У GNOME нет единой иерархии меню: кроме главного, вызываемого объектом-меню с гномьей лапой (оно же, когда вызывается щелчком правой кнопки на фоне или нажатием клавиши, почему-то называется глобальным (global)), пользователь может создавать обычные (normal) меню, связанные с объектами-меню на панелях.
Меню настраиваются примерно так же, как и панели: пользователь может добавлять, менять и удалять пункты, создавать подменю и т. п. При этом создаваемые обычные меню изначально пусты, а главное/глобальное заполняется при установке всем, что GNOME найдет в системе, и пользователю остается только убрать лишнее и переставить пункты в соответствии со своими предпочтениями.
Для настройки различных аспектов функционирования системы предназначен Центр управления , представляющий собой набор управляющих аплетов (каплетов, от англ. capplets, control applets), связанных с разными компонентами и прикладными программами.
Одни из них позволяют менять параметры рабочего стола и облик приложений (включая использование тем), другие — настраивать мультимедиа, третьи — управлять свойствами клавиатуры и мыши, и т. д.
Важным « каплетом » является менеджер т. н. драйверов документов (Document Handlers), устанавливающий соответствие между типом файла или протокола и программой, выполняющей различные операции с ними. Набор каплетов является расширяемым, их можно разрабатывать не только для программ, написанных специально для GNOME , но и для внешних программ.
Также постоянно расширяется набор утилит, прикладных программ и аплетов, поставляемых с GNOME — вместе с программами, входящими в большинство дистрибутивов ОС , о которых GNOME « в курсе », их число превышает сотню. Перечислить их здесь нет никакой возможности, но среди них есть интерфейсы для администрирования системы, средства звукозаписи и воспроизведения, сетевые утилиты, игры и многое другое.
GNOME снабжен встроенной системой помощи; кроме того, его разработчиками совместно с Sun Microsystems подготовлено компактное (130 с.) руководство, доступное в разных форматах на сайте проекта. В его поставку входит система разработки графических приложений под GTK+ , которая называется Glade и включает в себя специфические для GNOME элементы.
GNOME и большинство его компонентов соответствуют соглашениям об интернационализации и, соответственно, поддерживают работу с кириллицей, локализацию и перевод интерфейса. К сожалению, локализация GNOME сильно отстает от разработки.