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.

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

22 комментария:

virens комментирует...

Вот это да! Земной поклон за такой потрясающий пост - очень, очень красочно. Завёл каталог wmii в скрапах и унёс туда этот пост первым :-)
Особнно впечатлил гимп: как в старом анекдоте про кошек - это вы не умеете их готовить... Так вот в каком WM надо использовать этого осьминога!
Кстати, есть вопрос. Как в wmii запускаются приложения, работающие в tray? Особенно КДЕшные - для меня это актуально.
В остальном круто. Раздумал колупаться с ion3, в эмуляторе поставлю wmii и обязательно попробую.
Ещё раз спасибо за пост!

Von_old комментирует...

Трей - главное слабое место. Есть trayer, но он если и будет висеть, то только в одном тэге (как и gkrellm - тэги технически не являются виртуальными рабочими столами - они как слои окон - в этом основная фишка wmii). Но я не сильно разбирался в возможностях конфигурирования - может быть и есть возможность выноса trayer и gkrellm во все тэги. Меня пока базовые функции устраивают (за исключением небольшого тюнинга - завтра выложу конфиг). Ion3 мне показался слишком мощным и навороченным. :)

Анонимный комментирует...

Спасибо за пост!
Гимп впечатлил!!!!
Сразу решила поставить!

Анонимный комментирует...

Присоединяюсь к другим комментаторам:

Отличная статья.

Я вот несколько дней уже присматриваюсь к ion3 - они с wmii очень похожи, основаны на одних и тех же принципах.

Von_old комментирует...

Роман,
Я запускал у себя ion3 - не понравилось. Надеюсь, напишешь о результатах рассмотрения ion3? Было бы очень интересно поподробнее почитать об этом оконном менеджере.

libc6 комментирует...

Отличная статья. Это 5+. Пожалуй, до сего дня не видел более внятного и толковогоописания wm.

ps: неужели тебя так много спамят, что я вынужден из-за этого набирать этот бред - ibrwusx - каждый раз разный :) когда пишу комент. Я конечно не часто пишу... но все-таки :) Или меня одного напрягает?

Von_old комментирует...

libc6, огромное спасибо.

По поводу спама - я, наверное, его настолько не люблю. :) Прошу прощения, если это напрягает, но ведь не так уж и часто сюда писать приходится?..

libc6 комментирует...

Не так часто, да :)
Но должен тебе признаться, я уже и сам стал подумывать о защите.. мне в один из постов ссылок на порнуху накидали, а коменты я не модерирую, и не знаю как теперь этот комент удалить :(

Von_old комментирует...

В смысле "коменты не модерирую"?
Там же вроде как нет ничего проще - под каждым комментом есть значок "урна". :) Или тут какие-то грабли у тебя?

libc6 комментирует...

Да я нашел :) Б?л приятно удивлен своей невнимательности :)

Анонимный комментирует...

я проделал путь ion3 -> wmii -> ion3
ion3 впечатлил больше, ктомуже упоминаемый тут trayer в ion3 прячется в док (док это панелька скраю экрана, у меня она показывается/прячется по хоткею), хотя в ионе есть и встроенный трей, но он поддерживает только KDE-протокол.

Von_old комментирует...

Vyazovoi Pavel, я сейчас перешел на dwm, у wmii действительно есть несколько крайне неудобных моментов. ion3 мне только еще предстоит. Он довольно сложен для меня. :)

Unknown комментирует...

русский язык в заголовках сумел?

ох уж эти любители "несглаженных иксовых шрифтов" :(, возись блин с кодировками под нормальной utf8 локалью :(

Alexander Solovyov комментирует...

А что конкретно у wmii не нравится? А то я сейчас одновременно вожусь с wmii, xmonad и awesomewm, и пока вмии больше других нравится - особенно отсутствием концепции 'master'. Удобней окошки совать, что ли...

Von_old комментирует...

Не считая некоторых неприятных моментов в работе с "висячими окошками" - общая заторможенность. То есть, в общем и целом он бегает быстро. Но как только начнет подтормаживать одно приложение - и все. Жди пока пролагается.

Alexander Solovyov комментирует...

А у dwm такой проблемы нету? Т.е., одно приложение тормозит, но всё ок?

Von_old комментирует...

Насколько я помню, нет. Последние несколько месяцев использую KDE, поэтому точнее, к сожалению, ответить не смогу.

Alexander Solovyov комментирует...

Однако, сильно. ;) Но и wmii, и dwm я тоже забросил - они не умеют два экрана. Потому xmonad и всё...

Но КДЕ - это, конечно, резкое изменение приоритетов. ;)

Von_old комментирует...

Обратная сторона большого выбора - это сложность в его выполнении. Пытаюсь освоиться во всех средах по очереди и выбрать нужную. Пока что довольствуюсь KDE, но подумываю о том, чтобы вернуться на xfce4, который мне нравится чуть больше... да и бегает чуть шустрее. За упоминание xmonad - спасибо, погуглил, увидел скрин, заинтересовался. Первый стабильный релиз датируется всего лишь апрелем - видимо, поэтому этот оконный менеджер прошел мимо меня. Взял на заметку - возможно, поставлю и погляжу своими глазами. :)

CTpaHHoe комментирует...

интересная статья, помогла освоиться - спасибо.

столкнулся с такими проблемами:

1. запускаю программы, сворачивающиеся в трей (qutim/ktorrent) - они куда-то сворачиваются. так как трея как такогового нет, неясно, как их вытащить обратно
2. не вижу текущей раскладки клавиатуры. немного непривычно.

Von_old комментирует...

1. Отсутствие трея - главный недостаток фреймовых ВМ. Существуют какие-то отдельные треи - но это костыли, к сожалению, малоубедительные.

2. А вот с этим гораздо проще. В Интернете навалом руководств по настройке раскладок с помощью xorg.conf, в которых сразу же рассказывается, как подключить к раскладке клавиатурный индикатор Caps Lock или Scroll Lock, например.

TPMi комментирует...

у меня сегодня отвалились русске буквы в заголовках окон. вместо них теперь какая-то мешанина :(
произошло это, видимо, после обновления Х-сервера.
что делать?

Отправить комментарий