1 декабря 2006 г.

wmii: аскетичность, эффективность и простота.

Перед каждым "новообращенным" линуксоидом возникает вопрос: какой софт использовать? И в первую очередь этот вопрос касается оконных менеджеров. Пока ценители эргономики дерутся, определяя, что глючнее и круче - KDE или GNOME, пока разработчики SymphonyOS рисуют свою, еще более эргономичную среду, эстеты-одиночки поднимают Enlightenment, а особо извращенные умы вывешивают над всем этим Beryl, пользователи, желающие работать эффективно и экономить ресурсы своих машин, останавливаются на более скромных и гибких IceWM, WindowMaker и Black/Open/FluxBox. Но во всех этих оконных менеджерах/настольных средах более или менее существует уже привычная пользователям M$Windows/MacOS схема управления окнами: "крестик" окно закрывает, сворачиваются окна в taskbar (WMaker в этом плане слегка отличается, но не сильно), большая часть процесса управления окнами ведется мышью, даже при хорошей привязке хоткеев к рабочей среде. Результат - перекрывающиеся окна и не всегда удобные в использовании виртуальные рабочие столы. Против этой напасти есть решение - фреймовые оконные менеджеры. wmii - один из самых популярных среди них.

Началось все с того, что один мой знакомый убунтуец (естественно, гномовод) написал мне в jabber: "давно я не испытывал такого счастья!" Эти слова относились к оконному менеджеру wmii. К этой фразе я, как всегда, отнесся скептически. Однако, не поленился воспользоваться apt-get и поглядеть, что же в нем столь притягательно:
# apt-get install wmii
Зависимостей не потянул никаких. Объем пакета - полторы сотни килобайт. Каково? После установки X-server был перезапущен и на вопрос GDM "желает ли пользователь использовать wmii по умолчанию?" был дан утвердительный ответ. Увиденное неподготовленного пользователя не только не впечатлит, но и напугает:

Здесь описаны базовые комбинации клавиш, которые сразу же предлагается опробовать. Красота! После нескольких упражнений все они легко и просто запоминаются. Теперь подробнее о внешнем виде и принципах работы.

Начну с принципов работы, так как внешний вид напрямую зависит от них. Итак, у нас имеется рабочее пространство. Как только открывается окно, внизу появляется "вкладка", так называемый тэг (tag). Окно по умолчанию открывается на весь экран. Вновь открытые в этом же тэге окна появляются ниже выбранного по мере открытия, развернуты горизонтально. Клавиши LAlt+h/j/k/l позволяют переключаться между окнами по горизонтали и вертикали (по аналогии с управлением курсором в vim), LAlt+Shift+h/j/k/l позволяет перемещать выделенное окно, в том числе разворачивать его вертикально. По началу немного непривычно перемещать окна, чуть погодя привыкаешь и уже не ощущаешь неудобства. По клавише LAlt+p в строке статуса появляется что-то вроде диалога "Run...", то есть мы вводим команду, а справа по шаблону отфильтровываются возможные команды. Основываясь на собственном опыте, заявляю, что размахивание мышой по менюшкам требует куда больших затрат времени, чем ввод начала команды после нажатия хоткея. А если надо запустить что-то с какими-то специфическими опциями - никто не мешает сделать нужный скрипт и засунуть его в /usr/bin или /usr/local/bin (что я собственно и сделал со свежеустановленным aterm).

При первом запуске создается папка ~/.wmii-3/, в нее кладем копию файла /etc/X11/wmii-3/wmiirc. В этом файле хранятся все настройки wmii, будь то список автозагрузки, хоткеи или параметры цветовой гаммы (что не мешает при желании раскидать эти настройки по отдельным файлам) файл настроек может быть написан для любого интерпретатора, будь то sh, ruby, python или что-нибудь другое. По умолчанию используется sh. То, что все настройки сведены в один файл, дает возможность с легкостью хранить или переносить эти настройки. А возможность подключения разных файлов конфигурации позволяет использовать их именно так, как пользователь сочтет нужным. Удобно? Несомненно. Просто? Однозначно. Достаточно разобраться в sh и можно вытворять с этим оконным менеджером все, что угодно.

Теперь о внешнем виде. Слева на панельке отображаются тэги или соответствующие хоткею меню (например, меню wmii, состоящее всего из четырех пунктов, вызывается по LAlt+a, к слову, это меню позволяет применять свежесделанные изменения в настройках "не отходя от кассы" - нужно лишь выбрать файл настроек, подлежащий немедленному применению). Справа на панельке тэгов отображается следующая информация: Дата, время, средняя загрузка процессора за минуту, за 5 минут, за 15 минут. По умолчанию wmii раскрашен в синий цвет (выделенные тэги, пункты меню и окошки), что мне пришлось по вкусу. Обоев изначально не предусмотрено, но они легко ставятся с помощью feh.
# apt-get install feh
После установки прописать соответствующим образом в раздел # MISC файла конфигурации:
feh --bg-scale /адрес/до/картинки
Обои вы будете видеть не часто. Для тех окон, которым положен фиксированный размер автоматически включается режим floating, и они находятся поверх всех окон тэга. Тут же есть одна неприятная особенность, с которой мне пока совладать не удалось. Если в тэге открылось одно floating-окно, то все следующие открытые окна (пока хотя бы одно из них floating) будут тоже floating, вне зависимости от нашего желания. Возможно, лечится правкой конфигов. Попытки взять окно за заголовок мышой и перетащить это самое окно обречены на провал. :) Для перемещения необходимо зажать LAlt и левую кнопку мыши и таскать окно, как надо. Для изменения размеров надо ткнуть мышой в нужную четверть окна и зажать правую кнопку (удерживая все тот же LAlt).

Не раз сталкивался лбами с людьми, утверждающими, что им с красивыми гуями и мышами куда удобнее, чем со всякими хоткеями. В качестве аргументов они выкрикивали такие названия, как Adobe Photoshop, AutoCAD, IE (или любой другой броузер), и прочие. Эти споры бессмысленны изначально. Невозможно на клавиатуру перенести все функции мыши. И там, где мышь необходима - лучше не извращаться и пользоваться ей. Но вот вам пример: изменение размеров окна в любом оконном менеджере. Для этого надо попасть курсором в нужную границу (толщиной 3-6 пикселей обычно) и тянуть. Попасть не спорю, не сложно, никто из нас не алкоголик, руки не дрожат. Но вот используем эту же функцию изменения размера floating окна в wmii, привязанную к хоткею (а точнее хоткею+мыши). Зажимаем LAlt, тыкаем в нужную четверть окна правой клавишей мыши и тянем. На словах не совсем понятно, но это ускоряет процесс минимум вдвое. Точно так же и с менюшками: чем тыкаться по ним в поисках часто используемых программ, лучше привязать их к хоткеям. Я ни в коем случае не призываю обрывать мышь и выкидывать ее. Использование GIMP без мыши - изврат еще тот. Однако, о хоткеях тоже стоит задуматься. И в отношении таких простых действий, как управление окнами и запуск приложений, я ставлю на них.

В нормальном (читай: фреймовом) режиме можно менять внешний вид: default - как следует из названия, все открытые окна развернуты и видны, stack позволяет видеть развернутым только одно окно в столбце, остальные же - свернуты в заголовки, max - дает возможность видеть только выбранное окно (остальные не закрываются, а остаются внутри тэга.

Скриншоты могут не впечатлять, но это как раз тот случай, когда статичная картинка не дает правильного впечатления. В чем основное преимущество wmii перед его аналогами? В его легковесности и простоте. Несмотря на то, что для того, чтобы править конфиг надо читать документацию, этот оконный менеджер прост в использовании и настройке, а использование sh для этого конфига дает практически безграничный простор для настройки wmii. Так же, имеется отличная поддержка floating окон. После небольшой работы напильником просто срастаешься с этим фреймовым оконным менеджером. Вот мой wmiirc с некоторыми комментариями (KOI8-R). Огромное спасибо GiNeR за просвещение в области wmii и его настройки.

Примечание: в описании использовались умолчательные хоткеи. Естественно, они легко меняются в wmiirc.

Официальный сайт.