Расширяя горизонты
Да не обращайте внимания на названия моих заметок. Они вообще имеют мало общего с их содержанием. Это просто некоторые ассоциации, которые вдруг приходят мне на ум и не более того. Это так, к слову. Пойдём дальше.
Из одной из моих предыдущих заметок неявно следует, что описанные в ней так называемые "scratch-приложения" являются по определению однооконными. И в самом деле, если Вы попробуете в полной мере применить описанную методику к любому многоконному приложению (например, таковыми является большинство jabber-клиентов, в т.ч. gaim и gajim, на примере которых я и буду далее рассуждать), то Вы сразу столкнётесь с проблемой организации его многочисленных окон внутри scratchpad-а. И именно решение этой проблемы я Вам сейчас поведаю. Но сначала отвлечёмся на минуту-другую от линии повествования и посмотрим, как это выглядит в случае, если никаких усилий на этот счёт не прилагать:
- Либо так: Скриншот 1 - окно со списком контактов находится в одной куче с окнами открытых бесед, что может быть не слишком-то и неудобно (сам так жил долгое время и не сказать чтоб сильно мучался), но уж точно неконцептуально :) А главное - показательный пример для описываемого далее подхода.
- Либо так: Скриншот 2 - расположение видимо удобно автору, но реализовано оно, как видите, не в scratchpad-е.
- И третий вариант (скриншот для которого мне не удалось подыскать, да и нет в нём особой необходимости) - ограничить себя любимого использованием исключительно однооконных приложений для некоторых задач, в частности использовать для обмена мгновенными сообщениями centericq.
_:attach_new({type="WTiling", name="Instant Messaging"}):goto()
Выполняем внутри соответствующего scratchpad-а это несложное Lua-выражение и получаем полноценное рабочее пространство, которое можно поделить так, как бог на душу положит. Полученные в результате деления фреймы именуем так, как того требует внутренний голос и получаем то, во что можно начинать "раскладывать" окна. В моём случае это выглядит примерно так:

Левый фрейм был назван im_sp_conversation,а правый - im_sp_roster. Думаю, названия говорят сами за себя (расшифрую разве что im - instant messaging и sp - scratchpad) и дополнительный пояснений не требуют. Далее, делаем соответствующие настройки для окон (приведу их как для gaim, так и для gajim - авось кому пригодится):
-- Gajim
--
defwinprop {
class = 'Gajim.py',
instance = 'gajim.py',
role = 'roster',
target = 'im_sp_roster',
winlist_ignore = true,
}
defwinprop {
class = 'Gajim.py',
instance = 'gajim.py',
target = 'im_sp_conversation',
jumpto = true,
winlist_ignore = true,
}
-- Gaim
--
defwinprop {
class = 'Gaim',
instance = 'gaim',
role = 'buddy_list',
target = 'im_sp_roster',
winlist_ignore = true,
}
defwinprop {
class = 'Gaim',
instance = 'gaim',
target = 'im_sp_conversation',
jumpto = true,
winlist_ignore = true,
}
Готово! Получите, распишитесь. Спасибо за внимание. Пора работать.
PS: Я также приводил тут небольшой рецепт, который позволяет закрывать одним универсальным сочетанием клавиш любой активный scratchpad. По объективным причинам данный рецепт не будет работать, если вышеописанным образом породить внутри scratchpad-а другие фреймы.

1 отзывов:
подробненько. спасибо.
я тут пересел на ион с wmii. нравится.
вот только трабл с кириллицей :\
русские буквы показывает каким-то не тем шрифтом, огромным и корявым до невозможности. это при том, что xfontsel при той же маске шрифта показывает всё верно. дело, видимо, в юникодной локали, но как бодать?..
а еще - хочется гномские трей окошки и индикатор раскладки. где-то видел скрин, кажется, где х-чатовская иконка в трее отображалась. как сделать?
Отправить комментарий