суббота, 26 декабря 2009 г.

Еще немного про dock

Не так давно я жаловался на то что нормального дока под Linux, которым можно было бы пользоваться я так и не нашел. То что сейчас на слуху, во всяком случае было на слуху когда я этим всем интересовался: тот же Cairo Dock, или AWN какое-то корявое и неуклюжее, и пользоваться этим всем как-то не очень приятно. Совершенно неожиданно для себя наткнулся на целых две вариации на тему дока которые в принципе меня устраивают.

Итак, напомню, dock-like штуки интересны вовсе не потому что они красиво дергаются когда на них наводишь мышкой. Кому-то конечно гламурные подергивания и 3D-вид маковского дока может нравится сам по себе , потому что красиво - мне не очень нравится. Скриншоты с OS X я показывал, у меня это примерно вот так:

Просто панелька слева, с иконками приложений, белые точки возле приложения символизируют то что оно в данный момент запущено. Иконка приложения одновременно является и кнопкой быстрого запуска. Нижняя часть панельки - быстрый доступ к некоторым папкам: Applications, Downloads, Documents. При клике на папку появляется список файлов в ней, отсортированный по дате, полезно например для Downloads. Интерфейс мышекликательный, для любителей запускать приложения хоткеями или чем-то типа dmenu в OS X конечно есть свои инструменты, но об этом не здесь.

То есть, если по-простому, dock можно рассматривать как панельку на которой кнопка быстрого запуска и собственно кнопка окна запущенного приложения - это единая сущность. Если приложение запущено при клике на эту кнопку вы перемещаетесь на окно запущенного приложения, если нет - приложение запускается, если приложения в доке нет - при запуске его иконка там все-равно появляется. Никогда не мог понять почему это нельзя было реализовать это для той же gnome-panel, апплетов слежения за окнами дофига и больше, и совместить "слежение за окнами" и быстрый запуск не должно быть такой уж сложной задачей. Оказывается для gnome-panel такую штуку все-таки сделали. Называется она DockBarX, найти в гугле ее легче если искать windows7-like taskbar :).

Насколько я понимаю DockBar - это просто такая вариация на тему taskbar, где вместо текста иконки приложений, DockBarX - это экспериментальная ветка DockBar, в которую добавили возможность добавлять иконки для быстрого запуска. Пользователи Ubuntu могут поставить DockBarX из ppa:

deb http://ppa.launchpad.net/dockbar-main/ppa/ubuntu karmic main
Для Debian я просто собирал из исходников. После этого просто добавляем DockBarX Applet на gnome-panel. Кнопки быстрого запуска добавляются простым перетаскиванием. После перетаскивания у вас попросят WM_CLASS окна, для которого данная кнопка, если приложение запущено соответствующий WM_CLASS можно будет выбрать из списка. Если нет, или вы не видите нужного WM_CLASS, запустите терминал, наберите в нем:

xprop | grep WM_CLASS
курсор мыши скорее всего поменяет форму, кликните им по нужному окну, и в треминал должно выплюнуться что-то типа:

diesel@indie:/etc/apt$ xprop | grep WM_CLASS
WM_CLASS(STRING) = "gnome-terminal", "Gnome-terminal"

gnome-terminal нужно будет вписать в соответствующий диалог. После добавлений апплет может работать немного не стабильно, если что-то не так - достаточно просто перелогиниться в Gnome. Пользуюсь им наверное недели три - особой нестабильности в повседневной работе не заметил, кроме добавления кнопок быстрого запуска, все остальное работает нормально, в том числе и в связке с xmonad. Выглядит примерно вот так:

Текущее активное окно - иконка "нормального" цвета, иконки запущенных приложений, которые там-где-то-на-других-рабочих-столах - цвета слегка приглушенные, и совсем серые, слитые с цветом основного бэкграунда - это кнопки быстрого запуска для незапущенных приложений. Если окон несколько при наведении на иконку появляется список окон, и можно выбрать нужное.

"Буквы под лямбдой" - это другой нестандартный applet для Gnome Panel, называется File Browser Applet по ссылке можно найти скриншот и исходники. Служит для быстрого доступа к выбранным папкам. Возможно не так гламурно как в OS X, но в принципе неплохо, жаль нельзя вместо названия папки которое будет отображаться на панельке использовать иконки.

Решение с DockBarX и File Browser Applet мне нравится, нравится еще и потому что это практически обычный Gnome, обычная gnome-panel, просто другой набор апплетов, и все становится немного по другому. Можно создать отдельную панель, сбоку, как на скриншоте, можно бросить это все на уже существующую верхнюю панель, никаких эффектов, не нужен никакой композит, и наконец-то совсем не нужен этот дурацкий список открытых окон :)

У другого dock'а который мне понравился корни растут не откуда-нибудь, а из самой OS X, правда родственные узы здесь скорее в стиле "троюродный дедушка" :). В OS X есть замечательная запускалка приложений под названием QuickSilver, ориентирована на использование клавиатуры, позволяет не просто запустить приложение, а сразу чего-то в нем выполнить. Как ни странно штука еще и опенсорсная. Вдохновленные QuickSilver Линуксоиды написали не менее замечательную штуку под названием Gnome-Do, некоторым портит жизнь зависимости Gnome-Do от mono, но who cares. Gnome-Do развивался своей дорогой, и если был включен композит пользователи могли наслаждаться некоторым подобием дока - один из режимов отображения Gnome-Do. Кстати, кто смотрел новый российский фильм "про компьютеры" "На игре" мог заметить как раз таки Gnome-Do в режиме дока, на компьютере в который вставили диск со злополучной игрой, и который пришлось потом нести в ремонт :).

Фронтенд Gnome-Do похожий на док называется docky, docky-2 - это уже вполне самостоятельный док, со своим блэкджеком и шлюхами:


docky-1 был несколько тормозным, и каким-то корявым, docky-2 вполне нормальный, можно пользоваться. Обычный док, без излишеств, поддерживает темы, поддерживает плагины. Некоторое количество плагинов есть из-коробки, так же есть некоторое подобие интеграции с некоторыми популярными приложениями. В отличии от Gnome-Do может быть не только внизу, когда вы вызываете диалог настройки - сам dock можно перетаскивать в разные концы экрана. Дурацкий "зум" можно выключить, но композит ему все-равно нужен, можно просто запустить xcompmgr в бэкграунде. C xmonad работает нормально, воспринимается как панель. Приложения добавляются перетаскиванием иконки на панель, или для уже запущенного приложения, если кликнуть правкой кнопкой по иконке приложения на панельке можно выбрать "Pin to dock". Работает вполне стабильно, пока без нареканий, правда пользовался им только один день: вчера на работе.

Так что: не маком единым :)

6 комментариев:

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

Помимо gnome-do есть ещё запускалка на питоне - kupfer. Правда, никаких режимов dock'а здесь не наблюдается.

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

Спасибо, не знал про такую. Хотя в качестве запускалки использую xmonad'овский аналог dmenu, продвинутые функции мне не особенно нужны.

a.shaferov комментирует...

Вау..... Моя (точнее наша с Matias'ом) прога становится известна и в России.
Приятно...

В оригинальной DockBar тоже есть возможность быстрого запуска.

Про WMCLASS теперь не спрашивается, работает и так.

Обе версии можно использовать как плагин к AWN вместо его собственных средств, при этом функционал dockbar'а сохраняется.

http://www.gnome-look.org/content/show.php?content=97822

Система быстрого запуска все еще не совершенна, почему - написано по ссылке, в секции:
##### Launchers without problems! #####
- нужны изменения в спеках.

Было бы здорово, если бы Вы написали об этом в блоге или просто рассказали об этом. Это проблема не только dockbar'а, но и всех подобных программ.
Сейчас в Gnome-Shell возводят какие то костыли для "решения" проблемы.
К сожалению никто ничего менять не хочет.


Вау.......

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

Ухты, я видел что у одного из разработчиков DockBar русское имя, но не ожидал увидеть Ваш комментарий здесь. Когда увидел что DockBarX спрашивает WM_CLASS для иконки приложения которую на него перетаскиваешь, начал подозревать что скорее всего сложно ассоциировать собственно ланчер, и то что он фактически запускает.

Я так понял что как раз таки выставление адеватного StartupWMClass в .desktop-файле для приложения эту ситуацию могло бы исправить, но мало кто эту опцию действительно в .desktop файл прописывает. В тоже самое время Вы и другие разработчики которым нужно таки как-то проассоциировать ланчер с запущенным приложением ищите workarounds. C виду действительно не очень правильная ситуация.

Собственно к разработке для десктопа я не отношусь совсем никак, да и к какой либо "большой" разработке тоже, поэтому не совсем в теме. Обещать не буду, но постараюсь покопаться в проблеме, и расскажу об этом здесь.

a.shaferov комментирует...

Да, все так как вы описали.
Проблема именно в том, что для .desktop файла очень трудно найти соответствующий класс окон и наоборот.
Я писал в списки рассылки freedesktop, а также в ubuntu brainstorm.

Вообще самое правильное - это чтобы само приложение рисовало себе кнопку (или еще чего), как например в NeXTSTEP и OS X (насчет макоси - не уверен) и, частично, в win 7.
http://gnome-look.org/content/show.php/AppBar?content=105590
Ну, это так... мячты.

Часто читаю runix.org, вот и наткнулся на Ваш блог.

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

Спасибо за информацию