воскресенье, 30 марта 2008 г.

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

/*
1. Настройка меню.

Всё идёт в соответствии со спецификациями 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


<menu>
<name>Other</name>
<menu>
<name>X_Apps</name>
<defaultappdirs>
<defaultdirectorydirs>
<directory>X_Apps.directory</directory>
<include>
<filename>xfontsel.desktop</filename>
<filename>xdvi.desktop</filename>
<filename>xman.desktop</filename>
<filename>xcalc.desktop</filename>
<filename>xedit.desktop</filename>
<filename>xmag.desktop</filename>
<filename>xclipboard.desktop</filename>
</include>
</defaultdirectorydirs></defaultappdirs>
</menu>
</menu>



Все *.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 меню #

<menu>
<name>Applications</name>
<menu>
<name>wine-wine</name>
<directory>wine-wine.directory</directory>
<menu>
<name>wine-Programs</name>
<directory>wine-Programs.directory</directory>
<menu>
<name>wine-Programs-EmuZWin</name>
<directory>wine-Programs-EmuZWin.directory</directory>
<include>
<filename>wine-Programs-EmuZWin-Help and Catalog.desktop</filename>
<filename>wine-Programs-EmuZWin-EmuZWin.desktop</filename>
<filename>wine-Programs-EmuZWin-Uninstall EmuZWin.desktop</filename>
</include>
</menu>
</menu>
</menu>
</menu>


> 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/

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



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


2. Ребята, давайте жить дружно...
/Кот Леопольд/

Все попытки в 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. Тянуть древние технологии в "космос" - занятие требующее творческого подхода...

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

В качестве "точки отсчёта" примем следующую (процессор - 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". Исходники для тестов - там же, методика описана вкратце.


4. 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.

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