Итак, обещанный
duke_igthorn‘у мемуар-трактат про вертикальные панели.
Первым моим Window Manager’ом (после того как мне надоело бороться с ограничениями штатного WM’а Windows) стал последователь AfterStep, работающий под Windows, название которого я уже не припомню (Яндекс,
как назывался AfterStep для Windows?.. Ах да, LiteStep), да это и не важно. А важно то, что в нём я впервые познакомился с причалом (wharf), он же док (dock) (на первом попавшемся
скриншоте - панелька справа).
После перехода на Linux я *Step’оманом (или там WMaker’оманом) всё же не стал; залюбил вместо этого GNOME (с тогда ещё Enlightement’ом в роли WM’а) и про вертикальные панели временно забыл: в E и без того было чем развлечься, тем более новичку. Но фокус состоял в том, что на новой работе (на которой я работаю до сих пор) монитор был с диагональю 21“, и работа с ним навела на мысли о том, что горизонтальное пространство расходуется нерационально (в отличие от вертикального - чем больше строчек кода видно, тем приятнее). Когда на смену E пришёл Sawfish, мне было довольно нетрудно разместить в правой части аську(не помню, SIM это был, кажется)+XMMS+‘TODO.txt - gVim’, а всё остальное считать экраном, на который и «максимизировать» окна.
Дальше наступил GNOME2. Sawfish с Gtk+2 работал посредственно, с глюками, так что с тяжёлым сердцем пришлось от него отказаться (кстати, это долгое время было основной причиной неперехода на GNOME2 - Metacity рядом с Sawfish выглядел ненамного лучше виндового Explorer’а). Когда же перешёл, стал искать способ выкроить в правой части экрана «ненакрываемое» место («и побольше, побольше» ©) под XMMS+контакт-лист+окно беседы (с вкладками)+GKrellM. Быстро выяснилось, что прекрасной распоркой, которая могла бы выкроить это место могла (бы!!!) стать обычная вертикальная панель, приставленная к краю экрана. Если бы не возмутительное «но»: какой-то пи-ип из разработчиков GNOME выставил ограничение на максимальную ширину панели в 120 пикселов. Это было непрактично мало, но через некоторое время нашёлся необычный костыль: строка меню. Эта штука, будучи помещена в вертикальную панель, раздвигала её на собственную ширину (правда, ни пикселом меньше, ни пикселом больше). На ширину XMMS этого не хватало, но всё остальное более-менее помещалось. До тех пор пока в GNOME 2.10 не добавили в строку меню новый пункт верхнего уровня.
Ну хорошо, блин, перестроил, теперь даже под XMMS места хватило - но я прекрасно понимал прежнюю ограниченность своего решения. Как раз в это время вышел XFCE 4.2, и на одном из скриншотов я увидел предел мечтаний: возможность выделить с любой стороны экрана ненакрываемое распахивающимися окнами пространство.
Дальше была короткая измена GNOME’у с XFCE. Короткая, потому что функциональности панели XFCE мне всё-таки не хватило, да и менеджер окон, несмотря на упомянутую фичу, в общем и целом не прижился. Зато этот опыт обратил меня к
спецификации по Extended WM Hints на
freedesktop.org, чтобы узнать, как же XFWM выделял это пространство. Так я узнал про распорки (struts). И некоторое время после этого баловался с ними, вручную из консоли выделяя соответствующее место. «Решение» оказалось совершенно жутким, потому что Metacity очень не нравилось, что кто-то кроме него меняет конфигурацию рабочего стола. Однако «это работало». И примерно к этому времени относится
Идея про «витрину»
Итак, постановка задачи: хочется иметь место вдоль любого края экрана, неперекрываемое распахивающимися окнами (то есть защищённое распоркой), в которое можно было бы помещать окна и панели. В принципе, можно обойтись только панелями, но тогда я от них захочу заметно более богатой функциональности, чем та, которая есть сейчас (например, захочу видеть там контакт-лист из Gaim).
Смысл витрины состоит вот в чём. На мониторах размером больше 17” большое количество горизонтального пространства пропадает зазря. Особенно это критично для широких мониторов. Читать тексты, разнесённые на весь такой экран - сомнительное удовольствие. С исходными кодами и того хуже: они как правило отформатированы под ~80 символов и даже со всевозможными IDE-шными навигаторами место по горизонтали может остаться. Что там ещё - Gimp/Inkscape? Тут да, можно развернуться. OpenOffice.org - спорно: обычных размеров хватает, чтобы показать и страницу, и навигаторов-стилистов всяких.
Нечто подобное витрине можно видеть на ранних скриншотах Longhorn (не знаю, есть ли такая вещь в Vista): широкая такая боковая панель (правда, слева, а не справа, но не суть), на которой появляются частые действия для текущего контекста, индикаторы, превьюшки, миниплееры и так далее. Вот нечто подобное, но более гибкое, хочется видеть в GNOME. Остаётся неясным вопрос, можно ли будет окна, помещённые в витрину, распахивать на всю витрину (по идее может быть полезно) и вообще менять их размеры.
Вот. Такая в общем мысль. У самого руки до того, чтобы такую штуку реализовать, так и не дошли. Там нужно как-то изгаляться с иксовыми распорками (которые struts) и с атрибутами окон, чтобы окна в принципе можно было помещать в область распорки. Хотя для начала, повторюсь, хватит и обычной панели, максимальный размер которой не ограничен 120 пикселами (!) и для которой были бы апплеты большого размера, ведущие себя «почти как окна».