понедельник, 10 сентября 2007 г.

Enlightenment - out from the crowd



тема WM/DE всегда вызывает нездоровый ажиотаж. порой кажется, что приверженцы того или иного WM-а или DE готовы вылить друг на друга ушат помоев, превратив любую дискуссию в безобразную перепалку, лишённую и намёка на смысл. при этом вопросы удобства, функциональности и т.п. становятся совершенно излишними. холивар! бей <вписать_требуемое> спасай россию! благо обилие wm-ов к тому располагает. на мой совершенно неискушённый взгляд есть некий треугольник во всём этом безобразии, нет, более уместно будет говорить не о трио, но о 2-х полюсах: MAC OS и голая консоль терминала (из желания подчеркнуть, что известная компания из Рэдмонда таки скоммуниздила основы дизайна экскьюз май бэд фрэнч). и несётся из углов: "мышой возюкать", "клаву топтать", "юзабилити", "дружественность", "<сами_впишите_что_считаете_нужным>". касаясь личных предпочтений - интерфейс Mac OS X мне ближе командной строки, поскольку он (imho) более ориентирован на выполнение какой-либо работы (пример: выделяем текст в любом окне, идём в сервисы и видим, что мы с этим текстом можем сразу сделать - проверить орфографию, послать по почте и т.п. - интеграция системы и приложений великолепнейшая. вся организация меню строится на действиях, приложениях, а не на бессмысленной кнопке "Пуск" и последующем блуждании в дебрях чужого "разума", состояние психического здоровья которого оставляет желать лучшего).

среди всего этого хаоса Enlightenment выделялся всегда. полностью согласен с утверждением, что это - единственный WM, позволяющий контролировать любой аспект своей деятельности и дающий пользователю делать именно то, что он хочет (а не то, что иной WM считает правильным в той или иной ситуации). сейчас в стадии активной разработки находится DR17 (E17, Enlightenment DR17), стабильным же считается DR16 (E16, Enlightenment DR16). во многом они похожи, чего не скажешь по внешнему виду. Е17 принёс с собой класс библиотек EFL - Enlightenment Foundation Libraries, в то время как основой прежних релизов Е выступала лишь imlib, переросшая впоследствии в imlib2 (намеренно упускаю fnlib, поскольку ныне неактуальна, а слухи о появлении собственной "шрифтовой" библиотеки для Е17-го изрядно поднадоели).

если вести разговор с точки зрения поддержки EWMH, NetWM или прочих стандартов, то достаточно ознакомиться с файлом COMPLIANCE в корневом каталоге с исходниками Е16-го. можно при желании запустить в консоли eesh и управлять WM-ом посредством командной строки (для Е17-го где-то то же самое проделывается при помощи команды enlightenment_remote). одной из лучших характеристик Е является следующая: "Если Вы в состоянии создать картинку - Вы можете заставить Е выглядеть точно также" (Rob Malda). ни в коей мере не хочу принижать достоинства прочих, имя которым - легион: ion, wmii, dwm, twm, fvvm, windowmaker, icewm, cde и т.д.. долгое время пользовал windowmaker пока не захотелось чего-то совершенно особенного. не могу назвать выбор Е объективным - пришло ощущение, что это - моё. так оно и началось. заинтересовался Е17-м - появился сайт:
http://rootshell.be/~sda00/
где в довольно сумбурной форме нарисованы заметки об этом WM-е:
http://rootshell.be/~sda00/notes.html

позвольте же в заключение выложить довольно неуклюжий конфиг Е16-го (файл ~/.e16/bindings.cfg). он мало чем отличается от дефолта:
Alt+Esc - запуск exige (простая командная строка Е17-го)
Ctl+Esc - запуск urxvt
Ctl+F1 - показ всех запущенных приложений на всех столах с возможностью выбора нужного
Ctl+F2 - выключение пэйджера (он у меня самого большого размера, удобно окна таскать сразу по пейджеру, чем париться с переключениями)
Ctl+F3 - включение пэйджера
Shift+F8 - максимизация приложения на весь экран с "бордюрами"
Shift+F9 - минимизация/сворачивание приложения
Shift+F10 - максимизация приложения на весь экран без "бордюров" оформления темы
Shift+F11 - отображение приложения без "бордюров"
Shift+F12 - отображение приложения c "бордюром" по умолчанию (как правило количество типов "бордюров" зависит от темы и ограничено лишь фантазией создателя оной. любой из доступных "бордюров" может стать дефолтным для выбранного приложения)
выключена реакция Е на щелчки левой кнопкой мыши (вместе со всеми возможными "модификаторами") по рабочему столу.

$ cat ~/.e16/bindings.cfg

Aclass BUTTONBINDINGS normal
MouseDown A 1 wop * mo ptr
MouseDown SA 1 wop = mo ptr
MouseDouble A 1 wop * shade
MouseDown A 2 wop * sz ptr
MouseDouble A 2 wop * th available
MouseDown A 3 menus show WINOPS_MENU
Aclass DESKBINDINGS normal
Tooltip Clicking your mouse on the desktop will perform
Tooltip the following actions
Tooltip Display User Menus
Tooltip Display Enlightenment Menu
Tooltip Display Settings Menu
MouseDown - 2 menus show ROOT_2
Tooltip Display Enlightenment Menu
MouseDown A 2 menus show windowlist
Tooltip Display Task List Menu
MouseDown C 2 menus show deskmenu
Tooltip Display Desktop Menu
MouseDown S 2 menus show groupmenu
Tooltip Display Group Menu
MouseDown - 3 menus show CONFIG_SUBMENU
Tooltip Display Settings Menu
MouseDown * 4 desk prev
Tooltip Go Back a Desktop
MouseDown * 5 desk next
Tooltip Go Forward a Desktop
Aclass KEYBINDINGS global
KeyDown A F1 desk goto 0
KeyDown A F2 desk goto 1
KeyDown A F3 desk goto 2
KeyDown A F4 desk goto 3
KeyDown A F5 desk goto 4
KeyDown A F6 desk goto 5
KeyDown A F7 desk goto 6
KeyDown A F8 desk goto 7
KeyDown A Tab focus next
KeyDown SA Down area move 0 1
KeyDown SA Up area move 0 -1
KeyDown SA Left area move -1 0
KeyDown SA Right area move 1 0
KeyDown CA Delete exit logout
KeyDown CA End exit restart
KeyDown CA Right desk next
KeyDown CA Left desk prev
KeyDown CA Return desk this
KeyDown CA Up wop * raise
KeyDown CA Down wop * lower
KeyDown CA x wop * close
KeyDown CA k wop * kill
KeyDown CA s wop * stick
KeyDown CA i wop * iconify
KeyDown CA r wop * shade
KeyDown CA f wop * fullscreen
KeyDown CA m wop * ts conservative
KeyDown CA w menus show WINOPS_MENU
KeyDown CA a button_show all
KeyDown CA b button_show
KeyDown CA c button_show buttons CONFIG*
KeyDown CA d desk dragbar dir
KeyDown CA o desk dragbar order
KeyDown CS F1 menus show APPS_SUBMENU
KeyDown CS F2 menus show ROOT_2
KeyDown CS F3 menus show CONFIG_SUBMENU
KeyDown CS F4 menus show windowlist
KeyDown S F9 wop * iconify
KeyDown S F10 wop * fullscreen
KeyDown S F11 wop * border BORDERLESS
KeyDown S F12 wop * border DEFAULT
KeyDown C F1 menus show windowlist
KeyDown A Escape exec exige
KeyDown C F2 exec /opt/e16/bin/eesh "pager off"
KeyDown C F3 exec /opt/e16/bin/eesh "pager on"
KeyDown S F8 wop * ts
KeyDown C Escape exec urxvt


для создания своего уникального меню пользователя ознакомьтесь с файлом ~/.e16/menus/file.menu (его можно редактировать с помощью e16menuedit2).

Е16-ый вместе со всеми доступными epplets (эпплетами), инструментами для конфигурирования, библиотеками и т.п. занимает порядка 20мб. работает молниеносно, прекрасно поддерживает композит, прозрачность, Alt+правая кнопка мыши на любом запущенном приложении (по умолчанию) даст такое количество опций, о которых "вы всегда мечтали, но боялись спросить".

контроль, гибкость, свобода... ARE YOU ENLIGHTENED ???


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

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

Давай с самого начала...

как собрать е16 с svn ?
сделал следующее:
svn co http://svn.enlightenment.org/svn/e

чё дальше?

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

привет,

давай попробуем... компиляем именно E16 (первый релиз E16-го был в 1999-ом году).

1)
svn co http://svn.enlightenment.org/svn/e/trunk/E16/e

рекомендую также вытащить из svn следующее:

svn co http://svn.enlightenment.org/svn/e/trunk/E16/e16keyedit

svn co http://svn.enlightenment.org/svn/e/trunk/E16/edox-data

svn co http://svn.enlightenment.org/svn/e/trunk/E16/epplets

svn co http://svn.enlightenment.org/svn/e/trunk/E16/ethemes

2) для нормальной сборки нам нужно подготовить окружение. очень важно/желательно, чтобы библиотека imlib2 была собрана с поддержкой всего, что она в состоянии "разглядеть". нужно поставить следующие пакеты вместе сооьвеьсьвующими devel. то есть - zlib-devel, zlib и т.п.:

gcc-c++ gcc iputils cvs m4 autoconf automake libtool glibc-devel glibc glib2-devel glib2 zlib-devel zlib libjpeg-devel libjpeg doxygen fontco
nfig-devel fontconfig xorg-x11-devel xorg-x11-util-devel xorg-x11-libX11-devel xorg-x11-fonts-devel xorg-x11-libXfixes-devel xorg-x11-server-extra xorg-x11-server
xorg-x11 xorg-x11-libXpm-devel xorg-x11-libXpm dbus-1-x11 xkeyboard-config gettext-devel gettext imlib2-devel imlib2 pkg-config libpng libpng-devel libxml2-devel libxml2 libxslt-devel libxslt giflib-devel giflib pango pango-devel reetype2-devel freetype2 libtiff-devel tiff librsvg-devel librsvg libsvg-devel libsvg gtk-devel gtk gtk2 gtk2-devel ncurses-devel ncurses lib
svg-cairo-devel libsvg-cairo cairo-devel cairo libcurl-devel curl openssl-devel openssl libnotify xdg-utils xdg-menu libnotify notification-daemon pam pam-devel pam-modules pam-config libcurl-devel curl alsa-devel alsa alsa-tools-devel alsa-tools esound-devel esound

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

3) после чего можно собирать и ставить именно в том порядке, как мы тянули из svn. для установки по умолчанию можно сделать так:

chmod +x ./autogen.sh
./autogen.sh
make distclean
./configure
make
sudo make install

4) после чего можно/нужно дать знать gdm-у, kdm-у (любому логин менеджеру), что есть сессия E16:

sudo ln -s /usr/local/share/xsessions/e16.desktop /usr/share/xsessions/e16.desktop

если захочешь использовать E16 как WM для гнома/кде, то сделай ещё 2 симлинка:

sudo ln -s /usr/local/share/xsessions/e16-gnome.desktop /usr/share/xsessions/e16-gnome.desktop

sudo ln -s /usr/local/share/xsessions/e16-kde.desktop /usr/share/xsessions/e16-kde.desktop

всё.

в принципе можешь проверить, насколько хорошо собрана imlib2 в своём дистрибутиве до компиляции 16-го. набери команду:

imlib2_identify

картинка должна быть вот такой:

http://img395.imageshack.us/my.php?image=20081112151745mc8.png

удачи.

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

у тебя есть возможность постучать мне в жаббер?
Sly(at)root(dot)ua

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

Привет,

Напиши статью, как на опёнке прикрутить вот такую штуку ( хттп://code.google.com/p/itask-module/wiki/Stuff ) к е16, если можно это вообще сделать?

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

p.s. Именно что бы кубик был, крутился...

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

собрать и запустить на OpenBSD связку ecomorph+ecomp несложно, но только если Xenocara+Mesa поддерживает 3D (это некоторые карточки от Intel и ATI). "кубика" не будет, но всё остальное вроде как в наличии. также в текущем E-svn идёт допил композита для evas - будет что-то интересное. как только устаканится - обновлю wiki

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

Таким образом, кубик можно сделать только на e17?

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

именно "кубик" на Е17 пока (с текущим svn-ом) сделать не получится. но, после непродолжительного времени работы с wall-ом понимаешь, что кубик не нужен. expo, scale, shiftswitcher - и всё в норме.