О чём стоит помнить при использовании Enlightenment-DR17 (и не только)

sda00

2008-07-30

Настройка меню

Всё идёт в соответствии со спецификациями freedesktop.org. Но одно дело — рыть доки, а другое — быстренько наколбасить себе что-то стоящее. Ставим xdg-utils и смотрим, что оно должно в идеале выкинуть "на гора":

> set | grep -i xdg

XDG_CACHE_HOME=/home/sda/.cache XDG_CONFIG_DIRS=/etc/xdg XDG_CONFIG_HOME=/home/sda/.config XDG_DATA_DIRS=/usr/share:/usr/local/share XDG_DATA_HOME=/home/sda/.local/share

Каждый дистрибутив устанавливает (может установить) свой "скелет", положив файлы в $XDG_CONFIG_DIRS/menu. То бишь в нашем случае — в /etc/xdg/menu. Но это — не путь лентяев. Есть способ и попроще. Если мы хотим на скорую руку "добросить" приложения KDE — то достаточно прописать в $XDG_DATA_DIRS или в $XDG_DATA_HOME путь к каталогу, содержащему applications/ и desktop-directories/. И (опционально) можно "подтянуть" структуру KDE (файлы *.menu). Например $XDG_DATA_HOME указывает на /home/sda/.local/share. Смотрим:

> ls -la /home/sda/.local/share

total 3 drwxr-xr-x 9 sda users 248 2007-11-30 01:43 . drwxr-xr-x 3 sda users 72 2007-07-18 10:28 .. drwx------ 3 sda users 80 2007-09-04 19:25 amyedit drwxr-xr-x 3 sda users 2920 2008-03-27 04:17 applications drwxr-xr-x 4 sda users 96 2007-07-18 10:28 audacious drwxr-xr-x 2 sda users 456 2008-03-24 10:48 desktop-directories drwxr-xr-x 2 sda users 640 2008-02-23 02:26 icons drwxr-xr-x 3 sda users 136 2008-03-30 18:50 tracker drwx------ 4 sda users 96 2007-09-02 14:08 Trash

Следовательно, если KDE стоит в /opt/kde, то "добить" стоит /opt/kde/share, убедиться, есть ли что-нибудь полезное в /opt/kde/etc/xdg/menus и выправить пару переменных:

export XDG_DATA_DIRS="/opt/kde/share:$XDG_DATA_DIRS"
export XDG_CONFIG_DIRS="/opt/kde/etc/xdg:$XDG_CONFIG_DIRS"

или

export XDG_DATA_HOME="/opt/kde/share:$XDG_DATA_HOME"
export XDG_CONFIG_HOME="/opt/kde/etc/xdg:$XDG_CONFIG_HOME"

Делаем простейшее вложенное меню для E17-го:

> cat ~/.local/share/desktop-directories/X_Apps.directory

[Desktop Entry] Encoding=UTF-8 Type=Directory Icon=/home/sda/.icons/Dark-Glass/128x128/apps/x.png Icon[en_US]=/home/sda/.icons/Dark-Glass/128x128/apps/x.png

> cat ~/.e/e/applications/menu/favorite.menu

Other X_Apps X_Apps.directory xfontsel.desktop xdvi.desktop xman.desktop xcalc.desktop xedit.desktop xmag.desktop xclipboard.desktop

Все *.desktop файлы создаём в ~/.local/share/applications. Остальное уже описывал. Правда иконку на вложенное меню в тот раз не осилил (в .directory файле одной линии не хватило для победы). И скриншотик с результатами на закусь:

Теперь о том, как сделать каскадное вложенное меню и включить его в структуру xdg:

> cat ~/.local/share/desktop-directories/wine-wine.directory

[Desktop Entry] Type=Directory Name=Wine Icon=wine

> cat ~/.local/share/desktop-directories/wine-Programs-EmuZWin.directory

[Desktop Entry] Type=Directory Name=EmuZWin Icon=folder

> cat ~/.local/share/desktop-directories/wine-Programs.directory

[Desktop Entry] Type=Directory Name=Programs Icon=folder

> cat ~/.config/menus/applications-merged/wine-Programs-EmuZWin.menu # именно так и появляется структура xdg меню #

Applications wine-wine wine-wine.directory wine-Programs wine-Programs.directory wine-Programs-EmuZWin wine-Programs-EmuZWin.directory wine-Programs-EmuZWin-Help and Catalog.desktop wine-Programs-EmuZWin-EmuZWin.desktop wine-Programs-EmuZWin-Uninstall EmuZWin.desktop

> cat ~/.local/share/applications/wine/Programs/EmuZWin/EmuZWin.desktop

[Desktop Entry] Name=EmuZWin Exec=env WINEPREFIX="/home/sda/.wine" wine "C:\\Program Files\\EmuZWin\\EmuZWin.exe" Type=Application Path=/home/sda/.wine/dosdevices/c:/Program Files/EmuZWin Icon=23b5_emuzwin.0

Аналогичные desktop файлы для полноты картины ('Help and Catalog.desktop' и 'Uninstall EmuZWin.desktop') находятся в ~/.local/share/applications/wine/Programs/EmuZWin/

Примерчик конечно ещё тот, но и результат соответствует:

Надеюсь этого хватит с избытком.

Ребята, давайте жить дружно...

/Кот Леопольд/

Все попытки в E17-ом использовать прозрачность/(псевдо-прозрачность) терминалов ни к чему не приведут. Ибо формат пользовательского интерфейса — edje, а не png/xpm/jpg... Либо терминал скомпилен с поддержкой "картинок" (pixmaps) и картинка грузится из ~/.Xdefaults (профайла, вбивается в Exec строку .desctop файла и т.п.), либо требуется запустить некий сервис, который обеспечит наличие "фона" для "вьюпортов"/виртуальных столов. Легче всего это проделать, нарисовав в ~/.profile что-то наподобие:

if [ "`ps aux | grep enlightenment | grep -v grep`" != "" ] ; then
feh --bg-seamless /home/sda/source/install/wallpapers/emotion.jpg \
--bg-scale /home/sda/source/install/wallpapers/emotion.jpg && \
gnome-settings-daemon &
fi

Да, временное решение для одного вьюпорта/(виртуального рабочего стола). Ежели просто стартануть gnome-settings-daemon (без feh), то фоном станет картинка gnome. Что делать при нескольких столиках — не знаю. Пробежавшись по gconf-editor-у так и не понял, может ли гном держать где-то данные о соответствии картинок виртуальным столам. По идее — обязан. Дополнения приветствуются. Запуск gnome-settings-daemon и настройка внешнего вида уберут лишние элементы из gtk приложений:

Затея сия оправданна. Слева — Firefox, справа — LinuxDC++. Что и как с qt — извините, помню, что kde может при настройке из kcontrol привязать картинки к вьюпортам, но что именно нужно запустить сервисом для этого — страшно даже подумать. Может не прав, но... Надо конечно смелости набраться и поставить kde ещё раз... Если же в kde и gnome сопоставление вьюпортов с картинками завязано на kwin/metacity — то боюсь, что разрулить ситуацию малой кровью не получится. Тут есть ещё нюанс: сопоставить вьюпорты (Workspaces) E17-го и gnome/kde. Тянуть древние технологии в "космос" — занятие, требующее творческого подхода...

Немного об оптимизации

В качестве "точки отсчёта" примем следующую (процессор - P-III-866, ОЗУ — 1.5Gb, тема E17-го — 23Oz_0_16_999_042_1):

> top | grep enlightenment

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5266 sda 20 0 52688 34m 13m R 23.3 2.3 40:03.39 enlightenment

> enlightenment_remote -module-list | wc 58 230 1741

56 загруженных модулей: от управления громкостью до чтения RSS. Прежде чем экспериментировать, двигаем в 'Configuration Panel -> Advanced -> Profiles' и создаём новый профайл, копируя текущие настройки. После любых издевательств с системой откат/восстановление пройдёт одним щелчком при выборе бэкапа профайла. Приступим, выгрузив для начала все модули. оставил только управление почтой. При этом все наши настройки сохранены и работают. Доступны все хоткеи, меню, управление мышью, все рабочие столы — то есть при выгруженных модулях нет ни малейшей потери базового функционала.


> enlightenment_remote -module-list

REPLY <- BEGIN REPLY: "mail" ENABLED 1 REPLY <- END Закрываем все окна, кроме: entrance_login───enlightenment─┬─bash───gnome-settings-─┬─xrdb │ └─{gnome-settings-} │ └─urxvt───bash───screen > top | grep enlightenment

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14232 sda 20 0 26480 10m 6384 S 0.3 0.7 0:01.57 enlightenment

Причём эта строка в top-е появляется нечасто. Ставим дефолтную тему оформления 17-го:

> top | grep enlightenment

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14232 sda 20 0 22208 11m 6832 S 0.3 0.8 1:39.59 enlightenment

Необходимо заметить, что количество потребляемого ОЗУ прямо пропорционально загруженным текстурам. Возвращаемся в '23Oz.'. Ставим для всех вьюпортов градиентную заливку вместо картинок и edje файлов, ставим прозрачный фон для нашей "полки", на которой всё это время работает модуль 'mail' и:

> top | grep enlightenment

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14232 sda 20 0 24904 8988 6172 S 0.3 0.6 2:38.11 enlightenment

В иксах крутились два urxvt, в одном — screen c 5-ю терминалами, mutt, тот же gnome-settings-daemon. То есть последнее значение ни коим образом пределом не является. Если же задаться целью и для слабых машин сделать тему оформления сугубо на color_classes (привлекая текстуры по-минимому) или вообще без единого включения графических файлов, отдав всю отрисовку движку E (а он сам рисовать умеет будь здоров, в rgba) — думаю, потребление ресурсов можно снизить ещё. В разы. Все тесты специально проводил на 23Oz. — это одна из самых "тяжёлых" тем в плане графических наворотов на сегодня.

Желаете полный сравнительный анализ? Не вопрос. Сообщение от "Sunday, 29 May 2005". Исходники для тестов — там же, методика описана вкратце.

E16

А что же у нас со "старшим братом"? E-16.8.13-0.02, тема оформления 23Oz.:

> top | grep e16

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 25180 sda 20 0 14460 5752 3500 S 0.3 0.4 0:01.37 e16

E-16.8.13-0.02, тема оформления DarkOne:

> top | grep e16

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 25180 sda 20 0 13156 4616 2976 S 0.3 0.3 0:02.06 e16

С версии E-16.6 разработка — за Kim Woelders. Постоянная оптимизация кода, добавление новых опций, великолепные возможности по созданию/модификации интерфейса — Старая Школа во всей красе. Таким образом, для многих машин 16-ый подойдёт как нельзя лучше. Но, если создать облегчённый вариант оформления 17-му, то... Нельзя забывать, что 17-ый уже не просто WM. Он принёс EFL (Enlightenment Foundation Libraries) и, как E16-ый до него, шагнул в Terra Incognita.