19 июн. 2009 г.

LXDE всплывающая менюшка с содержимым конкретной директории

Цель: Облегчить жизнь в лайт гуяшной среде =)
Дано: Понравился мне LXDE вот хоть стреляйте, легенький, ничего лишнего ... панелька как панелька, кнопофки как кнопофки, и кушать не просят и местов много не занимают ;) Одним словом практически любовь с первого взгляда. Но задался вопросом как бы снести в панель запуска плагинчик для отображения нужной мне директории (директория книг).

Решение:
Рисовалось два решения либо писать апликейшн (/usr/share/applications), но гибкости нет, открывается отдельным окном ... либо …

Второй вариант использовать плагин самой LXDE panel'и, а именно dirmenu.
Но вот незадача, в настройках панели к данному плагину нет возможности конфигурации онного, уважаемый pcman возможно не успел написать данную часть для конфига данного плагинчика. С учетом что у него несколько разработок под LXDE то данный вариант более правдоподобен. (как оказалось позже, данный момент заложен, но не воспроизведен)

И что же получается?! по умолчанию данный плагин высвечивает содержимое домашней директории пользователя ...
Для меня это трагедия! Так как до книг еще бежать и бежать по путям ... симлинки плодить не вариант ...

Не долго размышляя ринулся в поиски конфига панели, долго искать не пришлось (~/.config/lxpanel/LXDE/panels/panel) и царапнуло глаз, что у других плагинов имелись настройки типа :

Plugin {
type = wincmd
Config {
Button1=iconify
Button2=shade
}
}


А мой герой-плагин как был одинешенек в поле так и оставался так.

Как ни крутил штатными гуй-утилитами настройки панели ни слова не говорилась о заложенном потенциале плагинчика dirmenu … Глянем еще раз в конфиг, что же мы имеем:

Plugin {
type = dirmenu
Config {
}
}


Первое на ум пришло (догадками) подписать туда что нибудь типа:
path=~/длинный_путь/Books/Coding/
или
dir=~/длинный_путь/Books/Coding/
или
другие варианты комбинирования фантазии …

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

Оставалось найти исходники сия чуда. Отдельно искать их? не реально, по догадке в src lxde был найден примечательный файлик dirmenu.c, как замечательно, и там то были найдены ответы на поставленные вопросы, а возможно ли?!

ВОЗМОЖНО! Глянем, то что собственно и искал:

                if (!g_ascii_strcasecmp(s.t[0], "image")) {
dm->image = g_strdup( s.t[1] );
fname = expand_tilda(s.t[1]);
}
else if (!g_ascii_strcasecmp(s.t[0], "path")) {
dm->path = g_strdup( s.t[1] );
}
else if (!g_ascii_strcasecmp(s.t[0], "name")) {
dm->name = g_strdup( s.t[1] );
}
else {
ERR( "dirmenu: unknown var %s\n", s.t[0]);
goto error;
}


Вот и замечательно =) имеем три значения конфига:
- image
- name
- path

уверен что каждый из них описывать смыла не имеет.

Тогда почему ничего не получилось когда "предугадывал" возможное значение
path=~/длинный_путь/Books/Coding/ ... спросите =) Да всё проще чем думается, панель уже была инициализированная, и что бы она подхватила настройки нужно перестартануть сессию Х.


В итоге получаем следующий конф для данного плагинчика:
Plugin {
type = dirmenu
Config {
image=/usr/share/icons/addressbook_section.png
path=~/длинный_путь/Books/Coding/
name=Coding
}
}



Примечание: Малюсенькое примечание, не надо плодить в папке ~/.config/lxpanel/LXDE/panels/ всяких OLD и BAK версий, так как они будут считываться LXDE как отдельные панельки, не взирая на ваши расширения, и желаемого результата Вы не увидите из за наложения нескольких панелей друг на друга. Удачи.

И еще одно, когда снова воспользуетесь гуевым конфигом панели, есть вероятность что конфиги данных плагинов (речь про dirname) в панелях затрутся …

Комментариев нет:

Отправить комментарий