21 ноября, 2006

Небольшое ноухау для ion3

Подумалось... Надо бы заметки и покороче писать. Не всё ж полноценные статьи строчить.



Приступим.

Вводная такова: на рабочем месте я использую оконный менеджер Ion3. Начну с того, что для перехода к нужным мне приложениям (например к любимому словарику) я с большим удовольствием использую замечательный скрипт app.lua из коллекции вкусностей для Ion3 (тем паче, что сегодня утром благодаря моим небольшим усилиям он стал ещё лучше и функциональнее, надеюсь на скорое появление патча в репозитории). И использование это выражается в keybinding-ах примерно следующего характера:

defbindings("WMPlex.toplevel", {

kpress(ALTMETA.."D",

"app.byclass('stardict', 'Stardict', _)"),

})



Ну а с помошью следующего фрагмента конфига:

defwinprop {

class = 'Stardict',

instance = 'stardict',

target = 'tools_sp',

jumpto = true,

winlist_ignore = true,

}



запускаемый словарик самостоятельно отправляется при запуске на "своё место". Многие уже догадались по предыдущему фрагменту конфига, что "местом" для данного приложения, как и для многих других, является соответствующий named scratchpad. Но есть проблема - всяческих скратчпадов у меня 5 штук (и не факт, что это конечное их число). И разумеется, я постоянно путаюсь, какой же кнопкой закрывается тот скратчпад, который у меня сейчас активен. Сегодня утром мне это надоело. И был придуман следующий keybinding:

defbindings("WMFrame", {

kpress( META.."Escape",

"mod_sp.set_shown(

ioncore.lookup_region(_:name(), 'WFrame'),

'unset' )" ),

})



Этот несложный биндинг "прячет" любой активный скратчпад. Вероятно, он может иметь побочный эффект при использовании его "не по назначению", но сей факт меня, честно сказать, не сильно беспокоит.



Кроме того, поделюсь ещё одной маленькой полезностью, связанной также с использованием большого количества скратчпадов. Сложность состоит в том, что они перекрывают друг друга не в порядке открытия. То есть, если у вас открыт скратчпад со словарём, а в этот момент вы открываете скратчпад с jabber-клиентом, то он вполне может оказаться "под" словариком. Или наоборот... в общем, ситуации всякие бывают, учитывая многообразие геометрий скратчпадов (во всяком случае у меня). И пришлось озадачиться поиском функций, которые позволили бы управлять "слоями" или даже "наслоениями" скратчпадов. Таковые были найдены, "забиндены" и сейчас будут представлены Вашему вниманию:

defbindings("WMFrame", {

kpress( META.."L",

"WRegion.rqorder(_, 'back')" ),

kpress( META.."U",

"WRegion.rqorder(_, 'front')" ),

})



Как несложно догадаться, нажатие Meta+L отправляет активный скратчпад "под" все остальные, а Meta+U "поднимает" его над всеми другими.



PS: вышеупомянутый скрипт app.lua отныне может искать запущенное приложение не только по строке заголовка или Window-class, но также и по атрибуту Window-instance, что особенно полезно в некоторых случаях. Каких? Об этом читайте в следующей заметке.

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

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

Спасибо за интересный пост. Собираюсь использовать ion3 как второй оконный менеджер, т.к. GiMP с Icewm работает отвратительно :-)
Можно ли сделать пост типа "быстрый старт свеже IONизированного пользователя"? Полезные ссылки, описания и прочее. А то попробовал сходу в нём посидеть - как-то страшновато. Вроде разобрался, но много вопросов...

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

Как готовить gimp я только собираюсь написать (всё руки не доходят). Следите за рекламой :)

Кое-что ещё буду писать про ион (очередной пост в настоящий момент уже сочиняется).

А писать нечто аля "quick startup"... ну фиг знает. Если бы у меня в голове вдруг родился чёткий план такой заметки, то я б не поленился. Но вот так навскидку я его не могу придумать :(

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

По ion'у замечательную статью написал Dark_Savant(aka warl0ck):
Ion3 - положительный WM
Кроме всего прочего там есть и про GIMP.