CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
28.06.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Окружение :: Графические среды :: Менеджеры окон

Ion3: положительный wm

Введение

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

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

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

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

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

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

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

Скриншот: fluxbox

Покопавшись некоторое время в конфигурационных файлах, я понял: это то, что я так долго искал. Конфиги - это, по сути, программы на языке 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"

3) открываем файл ~/.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. Cкачать его можно здесь или взять скрипты из 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, слои перед нами. повторное нажатие, и они более не загромождают собой экран. Вот так это все выглядит:

Скриншот: Gimp

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. вот так это выглядит:

Скриншот: Moc & 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 - легкий системный монитор.

Итог

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

2006.07.31



Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds