Обзор оконного менеджера Ion3

Автор: warl0ck

-- Введение
-- Раскладываем окна по воркспейсам
-- GIMP
-- Conky
-- Полупрозрачные терминалы
-- Автоскрытие таббара
-- Программы
-- Итог

-- Введение --

Являясь до недавнего времени "счастливым" обладателем ПЭВМ из неолита, я активно использовал полноэкранный текстовый оконный менеджер screen. Естественно, что все операции с окнами и запуск программ производились по горячим клавишам, нечестивый же зверек, именуемый мышью использовался исключительно при "работе" с программой lsdoom 8)

Когда я обзавелся персоналкой, на которой можно было без лишней нервотрепки работать в иксах (X window system), я пришел к выводу, что столь популярное ныне построение десктопа меня, мягко говоря, не устраивает. От использования различных DE я отказался сразу, т.к. уж больно они, на мой взгляд, слонообразные и, как следствие, неповоротливые. Испробовав несколько современных легких wm, я остановился на IceWM, попользовавшись им некоторое время, перешел на Fluxbox.

Что меня не устраивало даже во флуксе ? Во-первых, как пользователю screen со стажем, мне полюбились не перекрывающиеся окна. Недолго думая, я присвоил окнам используемых приложений статус fullscren, сгруппировал по различным воркспейсам и некоторое время радовался жизни.

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

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

Для начала, я попробовал wmii. Сразу не понравилось огромное количество не эргономичных, на мой взгляд, решений. Пример: при 10 тегах (ну ладно, пусть не все из них активны), в названии которых было до 4х букв, теглайн занимал практически весь статусбар ( при разрешении 800х600 ). Плюс к тому, имя текущего тега дублировалось еще и в заголовке. Помучив wmii еще некоторое время, я оставил его в покое.

Следующим подопытным был ion3. Первой мыслью было следующее: "ух, прям как флуксбокс с моим оформлением"



Покопавшись некоторое время в конфигурационных файлах, я понял: это то, что я так долго искал. Конфиги - это, по сути, программы на языке lua, интерпретатор которого, как известно, легко встраивается куда угодно 8) Что мы имеем благодаря этому ? Модульность и неограниченные возможности по расширению.

Первое, что я сделал, это переназначил стандартные хоткеи на свои устоявшиеся. Файлы из /usr/etc/ion3 мигрировали в ~/.ion3/main , а сам ион стал запускаться командой ion3 -searchdir ~/.ion3/main . Затем, я написал для него тему оформления в своем излюбленном черно-зеленом стиле ( look-monochromatic.lua ) Ну а за тем началась уже настройка управления окнами, о которой я и хочу рассказать.

-- Раскладываем окна по воркспейсам --

В первую очередь расположим окна по нашим многочисленным (или не очень) ворекспейсам. Для этого сразу

0) создадим файл ~/.ion3/cfg_user и пропишем

dopath("cfg_kludges") -- настройки окон
dopath("cfg_bindings") -- наши биндинги
dopath("toggle_named_scratchpad") -- а это очень полезный скрипт

это заставит ион загружать эти файлы при старте.

1) запускаем нужную нам программу
2) в терминале набираем xprop |grep -iE "class|role" и тыкаем курсором в допрашиваемое окошко. Получаем нечто вроде этого:

WM_WINDOW_ROLE(STRING) = "window-role"
WM_CLASS(STRING) = "window", "Window"

2) открываем файл ~/.ion3/cfg_kludges.lua и пишем туда следующее:
defwinprop {
instance = "window", -- первое значение WM_CLASS
class = "Window", -- второе значение WM_CLASS
role = "window-role", -- значение WM_WINDOW_ROLE
target = "target" -- а это целевой воркспейс, тег или скратчпад
}



-- GIMP --

И так, что делать с гимпом ? Повторюсь, что единственное разрешение на 17" мониторе, при котором у меня не устают глаза, 800х600. Задача такова: поделить экран так, чтобы главное окно гимпа занимало основную часть рабочей области, панель инструментов была всегда видна, к панели слоев нам нужен быстрый доступ, однако она не должна путаться под ногами.

Последовательность действий следующая:

0) создаем воркспейс gimp, нажимая alt-f9 , вводим gimp , workspace type выбираем как WIonWS
1) делим его на 2 части, нажав alt-k s (по умолчанию)
2) изменяем размеры по вкусу
3) переименовываем меньшую область в g_tool, большую в g_win . для этого
нажимаем alt-f3 , в появившуюся строку вводим mod_query.query_renameframe(_)
4) сейчас нам понадобится скрипт toggle_named_scratchpad.lua ( скачать егоможно здесь:
http://www.modeemi.fi/~tuomov/repos/ion-scripts-3/scripts/toggle_named_scratchpad.lua
или взять скрипты из darcs репозитария:
darcs get http://iki.fi/tuomov/repos/ion-scripts-3/
после того, как скрипт скачан, скопируем его в ~/.ion3

5) в cfg_bindings.lua пишем в секцию defbindings("WScreen", { ... })

kpress(META.."V", "toggle_named_scratchpad(_, 'g_lay')"),

теперь по нажатию alt-v у нас появится именованный скратчпад (окошко поверх всего) и по повторному нажатию скроется с глаз долой.
6) открываем cfg_kludges.lua и пишем:

defwinprop {
class = "Gimp",
instance = "gimp",
role = "gimp-toolbox",
transient_mode = "on",
target = "g_tool"
}

defwinprop {
class = "Gimp",
instance = "gimp",
transient_mode = "off",
target = "g_win"
}

defwinprop {
class = "Gimp",
instance = "gimp",
role = "gimp-dock",
transient_mode = "off",
target = "g_lay"
}


7) нажимаем f12, вводим session/save , потом session/restart
8) запускаем гимп и радуемся: теперь не нужно перетаскивать мышкой окно рисунка, чтобы добраться до панели инструментов или слоев. жмем alt-v, слои перед нами. повторное нажатие, и они более не загромождают собой экран. Вот так это все выглядит:



-- Conky --

Многие любят эту программку - монитор, люблю и я 8) Ну не хватает мне ионовского статуслайна для вывода температуры жестких дисков, поступившей почты, погоды, и списка наиболее прожорливых приложений. До десктопа в ионе можно добраться исключительно тогда, когда воркспейс является WFloatWS, а я таковые не использую. Посему применим обходной маневр:

0) если нету toggle_named_scratchpad.lua, то качаем
1) изменяем в ~/.conkyrc опцию own_window на yes
2) в cfg_kludges.lua добавляем

defwinprop {
instance = "conky",
transient_mode = "off",
target = "stat"
}


3) в cfg_bindings.lua в секцию defbindings("WScreen", { ... })

kpress("Control+space", "toggle_named_scratchpad(_, 'stat')"),
теперь по ctrl-space, у нас появится conky. вот так это выглядит:



-- Полупрозрачные терминалы --

За время использования fluxbox, привык я к полупрозрачным терминалам ( разумеется, псевдопрозрачным). При переходе на ion, я столкнулся со следующей проблемой: по бокам aterm'a были отвратительные светлые полоски. Похоже, это следствие того, что ion ресайзит терминалы не по пикселам, а по столбцам и строкам. прописывать в стиле оформления transparent_background = false не хотелось.

Посему открываем гимпом свою любимую фоновую картинку и затемняем ее насколько надо. в ~/.Xdefaults пропишем Aterm*shading: 100 . Все, теперь у нас красивые полупрозрачные терминалы 8)

-- Автоскрытие таббара --

Зачем нам заголовки окон ? да еще когда окно на воркспейсе всего одно.. никогда не понимал этого в отличии от любителей всеобщего дублирования. Решение нашлось на удивление просто, даже не пришлось самому ничего писать. Достаточно скачать и установить скрипт min_tabs.lua

Для переключения таббара вручную пишем в cfg_bindings.lua в секцию defbindings("WFrame", { .. }) строчку kpress("Control+H", "WFrame.set_tabbar(_, 'toggle')"),

теперь по нажатию ctrl-h перключается видимость таббара.

-- Программы --

0) aterm - мой любимый эмулятор терминала 8)
1) Music On Console - отличный демонический плеер, который поддерживает немало форматов ogg,mp3,flack,mpc,m4a,mod,xm,it.. в отличии от mpd, позволяет проигрывать треки с файловой системы, без добавления в базу.
2) mplayer - этот плеер не нуждается в представлении 8)
3) vim - про этот редактор можно рассказывать сутки напролет 8)
4) elinks - текстовый браузер. куда совершеннее старичка links'a.
5) opera - оперу знают многие. но все ли знают, что с помощью нее можно серфить web, не используя мышь ? shift+стрелки и можете отправить грызуна на заслуженый отдых.
6) mutt - "all mail clients suck. this one just sucks less." - цитата с оффсайта.
7) centericq - консольный im клиент. также абсолютно мышенезависим. особенно хорош в сочетании с osd_notify ( см. мою статью на эту тему )
8) weechat - расширяемый irc клиент.
9) gimp - также не нуждается в представлении.
10) xzgv - удобный и легкий просмотрщик картинок.
11) conky - легкий системный монитор.

-- Итог --

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