Blackbox как представитель True Unix GUI

Алексей Федорчук
2001 г

Очень древняя заметка. Да и герой её не обновлялся с незапамятных времён. Но именно в таком виде до сих пор входит в репозитории многих «больших» дистрибутивов.

Пожалуй, наиболее интенсивно развивающееся направление в развитии открытого софта — это интегрированные визуальные (называемые также не совсем точно графическими) среды — KDE и GNOME, — и приложения для них. Роль этих сред, особенно KDE, для роста популярности Unix-подобных систем (особенно Linux’а) переоценить трудно. Именно они помогли и помогают недавнему Windows-мигранту преодолеть барьер отчуждения от мира командных строк и текстовых редакторов.

Однако по мере обвыкания в POSIX-мире в интегрированных средах выявляется несколько своего рода раздражающих факторов. Первый — изобилие навязываемых для комплекта приложений, далеко не всегда принадлежащих к числу самых совершенных в своем классе. К примеру, если Konqueror из KDE можно считать лучшим файловым менеджером всех времен и народов, то уже Kwrite, не говоря уже о KEdit’е — далеко не самый совершенный из текстовых редакторов; а ведь в KDE стандартно устанавливаются оба, плюс еще по настоящему хороший редактор Kate.

Второй источник раздражения — сложность и непрозрачность конфигурирования. Конечно, в том же KDE настроить можно абсолютно все, что угодно, вплоть до придания этой среде вида, совершенно на себя не похожего. Однако для этого приходится много рыскать по пунктам меню, часто глубоко зарытым и не всегда очевидным по смыслу. А достаточно запутанная структура конфигурационных файлов препятствует ручному вмешательству в процесс настройки.

Третья причина для раздражения — не всегда оправданная функционально требовательность к ресурсам. Что усугубляется излишне громоздким интерфейсом, снижающим не столько даже объективное (то есть аппаратно обусловленное) быстродействие, сколько замедление работы вследствие пресловутого человеческого фактора (по-простому это можно назвать — «глаза разбегаются»).

Кроме того, если KDE или GNOME воспринимается как органичный компонент user-ориентированных дистрибутивов Linux, то на фоне строгой простоты BSD-систем или Linux’ов, базирующихся на исходниках, они выглядят чужеродными включениями. Я уж не говорю о том, что интегрированные среды, заимствовавшие многие элементы интерфейса Mac/Windows, рассматриваются часто как идеологически чуждые миру Unix’а. Но это я во внимание не принимаю, ведь основа идеологии постсоветского человека — то, что все эти идеологии ему… по барабану. Тем не менее, со временем у пользователя возникает естественное желание вернуться к истокам, то есть к тому, что Виктор Вагнер некогда удачно назвал True Unix GUI.

Правда, понятие это само по себе неоднозначно и требует некоторого освещения. Действительно, какова основная цель использования GUI’ев любого рода? Бытует мнение, что их главное (и чуть не единственное) предназначение — открыть много-много терминальных окон для работы в командной строке. Что, не смотря на некоторый экстремизм, не лишено резона. Ведь в POSIX-мире именно командная среда — наиболее эффективный инструмент для решения доброй половины пользовательских задач.

Однако остается еще худая половина задач, которая требует какого-никакого графического режима. Ведь пока еще никто не додумался, как ретушировать фотоизображения в окне терминала. И если в последнем можно строить векторные чертежи или 3D-объекты, то для визуализации результатов графика все равно потребуется. Как и соответствующая программа, которую, очевидно, придется запускать из графической среды. Из чего естественно вытекает главная функция GUI — обеспечить запуск программ, управление открытыми приложениями и взаимодействие между ними. Все же остальное может рассматриваться как «бантики».

Хотя и роль «бантиков» преуменьшать также не следует. Если текстовую консоль при все желании невозможно изуродовать, то с графическими интерфейсами это — плевое дело. Тем, кто помнит первые две (1-ю и 2-ю) версии Windows, не нужно объяснять, что такое уродливый графический интерфейс. Да и в мире Иксов подобные примеры сыщутся без труда. И потому эстетика GUI — далеко не последнее, что требуется для эффективного использования его функций. Однако эстетика для каждого своя — хотя для того, чтобы заметить отсутствие эстетики — не нужно быть художественным критиком, достаточно обратиться к пред-предыдущей фразе. А поэтому настраиваемость среды приобретает самоценность. Причем настраиваемость, осуществляемая простыми и понятными средствами.

Что же такое True Unix GUI с изложенных позиций? Пожалуй, традиционно в качестве такового рассматривается FVWM — не случайно именно он обычно оказывается оконным менеджером по умолчанию после установки системы X Window. Однако, на мой взгляд, есть не менее законный претендент на этот титул — оконный менеджер Blackbox.

Это — предельно простая по устройству и очень компактная среда (размер исполняемого файла менее 200 Кбайт, в полтора-два раза меньше также не тяжелых IceWM или WindowMaker). Для своей установки и работы она не требует никаких специальных высокоуровневых библиотек типа Qt или Gtk. Тем не менее, возможностей для пользователя она предоставляет вдоволь. Здесь и (рис. 1):

  • неограниченное количество виртуальных рабочих столов (Workspaces), создаваемых при необходимости легким движением мыши;
  • удобные средства навигации между рабочими столами и окнами открытых приложений; таковыми являются, во-первых, небольшая (и к тому же могущая скрываться автоматически) панель управления (Toolbar), во-вторых — контекстное меню, доступное по щелчку средней клавишей мыши;
  • легко доступное (по щелчку правой клавишей мыши) и элементарно настраиваемое контекстное меню для запуска приложений;
  • возможность минимизации, максимизации и закрытия окон приложений, сворачивания их до строки заголовка; при этом соответствующие управляющие элементы расположены удобно и привычно.

b01Рис. 1. Blackbox — общий вид

О возможностях настройки Blackbox следует сказать особо. Элементарное его конфигурирование выполняется непосредственно с рабочего стола. Здесь можно изменить модели фокусировки окон (по щелчку мышью, по перемещению курсора, автовсплытие) и их открытия (каскадное, «умное», упорядоченное в любом направлении), положение панели управления и некоторые другие параметры.

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

Более тонкие настройки выполняются традиционным способом — правкой конфигурационных файлов. Главным из них является ~/.blackboxrc, который при первом же запуске Blackbox автоматически образуется в домашнем каталоге пользователя. Именно в нем прописаны модели фокусировки и открытия окон, положение панели управления, количество и имена рабочих столов.

Кроме того, в ~/.blackboxrc указываются пути к файлу, определяющему состав главного меню и к стилевому файлу, ответственному за внешний вид. По умолчанию это /usr/X11R6/share/Blackbox/menu и /usr/X11R6/share/Blackbox/styles/имя_стиля, соответственно. Редактированию пользователем они, естественно, не поддаются. Однако ничто не мешает скопировать целиком /usr/X11R6/share/Blackbox/ в свой пользовательский каталог

$ cp -R /usr/X11R6/share/Blackbox/ ~/.Blackbox/

и развлекаться с ним в свое удовольствие. В частности, переопределить состав главного меню можно просто в текстовом редакторе. Для этого достаточно внести в него, после строки [begin] (Blackbox 0.61.x), требуемые приложения в следующем формате:

  [exec] (rxvt)     {rxvt}

Можно организовать и субменю любой степени вложенности:

  [submenu] (Graphics)
 [exec] (XV)           {xv}
 [exec] (The GIMP)     {gimp}
 [exec] (Image Magick) {display}
[end]

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

Ну и, конечно, нужно не забыть изменить пути к соответствующим файлам в ~/.blackboxrc. После чего вопрос с настройками Blackbox’а можно считать законченным.

Не знаю, удалось ли мне убедить читателя в несравненных достоинствах Blackbox’а. Однако думается, что таковые (компактность, оптимальное соотношение между возможностями настройки и их простотой, удобство использования и исключительная элегантность) делают его достойным звания истинно Unix’ового десктопа. Единственно, чего в нем не хватает по большому счету — это какого-нибудь минитерминала типа minicli в KDE, командной строки в панели IceWM или пункта Run в меню WindowMaker’а.

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

Однако эти ограничения изначального Balckbox’а полностью компенсируются многочисленными дополнительными компонентами, разработанными для повышения его функциональности и распространяемыми самостоятельно. Среди них:

  • bbrun, удобная строка минитерминала, подобная mini-cli из KDE, поддерживающая историю команд в виде выпадающего меню;
  • bbpager — средство визуального управления окнами, открытыми на виртуальных рабочих столах;
  • bbkeys — система определения «горячих клавиш»;
  • bbrb — менеджер фоновых изображений.

Не обошлось и без интерактивного средства конфигурирования Blackbox — программы bbconf, позволяющей в интерактивном режиме изменять меню этого оконного менеджера, переопределять «горячие клавиши» и т.д. Аналогичное назначение имеет и пакет toolbox — комплексное средство для настройки Blackbox. Впрочем, мне все равно кажется, что настройка вручную более удобна и трудностей не доставляет…

Определение «горячих клавиш» не показалось мне очень уж удобным. Оно требует сначала запуска программы bbkeysConfigC, в которой (в терминальном режиме) нужно определить все клавишные комбинации, которые предполагается задействовать в качестве «горячих», а уж потом посредством bbconf приписать им некоторые действия (перемещения по рабочим столам, например). Однако в результате этого создается новый конфигурационный файл — ~/.bbkeysrc, который легко отредактировать вручную, например, таким образом:

KeyToGrab(1), WithModifier(Mod1), WithAction(Workspace1)
...
KeyToGrab(#), WithModifier(Mod1), WithAction(Workspace#)

для легкой навигации по рабочим столам.

Чтобы постоянно пользоваться «горячими клавишами», средствами управления окнами и минитерминалом, соответствующие программы можно загружать одновременно с Blackbox’ом. Для этого вызывающие их команды нужно внести в файл ~/.xinitrc:

#!/bin/sh
imwheel &
bbrun &
bbkeys &
bbpager &
exec blackbox

Разумеется, первая из командных строк требуется только при использовании скроллирующего колесика мыши. Причем интересно, что даже без загрузки программы imwheel колесо прокрутки в Blackbox работает с рядом приложений (хотя — и не во всех).

Функциональная ограниченность Blackbox (а главное, видимо, практическое прекращение его развития) вызвала к жизни несколько сделанных по его образу и подобию оконных менеджеров — например, openbox, fluxbox и hakedbox. По интерфейсу они весьма мало отличаются от оригинала, и, более того, способны работать с большинством его дополнительных модулей. Впрочем, принципиально новыми возможностями из всех этих клонов отличается только fluxbox.