booley 18.03.2009 09:18
Оконные менеджеры — Awesome 3
Awesome - тайловый оконный менеджер, основанный на dwm. Обладает, на мой взгляд неплохим интерфейсом (в тех рамках, в которых это может делать tiling window manager)Для начала приведу скриншот GIMP в awesome
Теперь, если вы продолжили читать, я немного опишу свои впечатления от awesome. Если быть правдивым, мне нравится. Описал свои впечатления, идем дальше. Мне нравился dwm и мне нравится awesome. Упростив до минимума, awesome - dwm improved, или, говоря по-русски, улучшенный dwm. Основное отмеченное мною отличие:
dwm не имеет конфигурационного файла, awesome имеет таковой на языке Lua. Таким образом, если вы владеете Lua, рекомендую попробовать awesome, вы сможете настроить все и даже больше :) Но даже если вы не владеете Lua (об этом говорил Юрий), вы сможете подправить конфиг под свои нужды.
В Awesome существует 4 layouts, tiling, max, magnifier и floating (как в других wm). Тайловый (основной) режим очень полезен, когда у вас открыто хотя бы два-три окна :) окна делятся на два типа: одно главное и остальные. Главное окно занимает основную часть экрана (слева, снизу, справа, сверху, на выбор), остальные все оставшееся пространство.
Также в awesome реализованы следующие стандарты freedesktop.org: EWMH, XDG Base Directory, XEmbed, Desktop Notification, System Tray
Awesome первый оконный менеджер, работающий через xcb, а не через Xlib. Условно, можно сравнить это с переходом от cp866 к Unicode, но разница здесь еще больше: xcb - асинхронная библиотека, что делает awesome быстрее других оконных менеджеров.
Официальный сайт
Данный wm имеется в debian/unstable. Для тех, кто решил компилировать из исходников (мало ли что), выкладываю список зависимостей:
libc6, libcairo2, libdbus-1-3, libev3, libglib2.0-0, libimlib2, liblua5.1-0, libncurses5, libpango1.0-0, libreadline5, libx11-6, libxcb-atom1, libxcb-aux0, libxcb-event1, libxcb-icccm1, libxcb-image0, libxcb-keysyms0, libxcb-property1, libxcb-randr0, libxcb-render-util0, libxcb-render0, libxcb-shm0, libxcb-xinerama0, libxcb-xtest0, libxcb1, menu, x11-xserver-utils
l1feh4ck3r 18.03.2009 09:52 #
+ 0 -
Может я не прав, но в debian/experimental лежит awesome второй версии, а поддержка конфигов на lua только с третьей версии.
Да, он лежит в unstable, ошибся.
tim@debian:~$ aptitude show -t unstable awesome
Пакет: awesome
Новый: да
Состояние: установлен
Автоматически установлен: нет
Версия: 3.2-1
Приоритет: необязательный
Раздел: x11
Сопровождающий: Julien Danjou <[email protected]>
Размер в распакованном виде: 1745k
Зависимости: libc6 (>= 2.1), libcairo2 (>= 1.6.4-5~), libdbus-1-3 (>= 1.0.2), libev3 (>= 3.0), libglib2.0-0 (>= 2.12.0), libimlib2, liblua5.1-0, libncurses5
(>= 5.6+20071006-3), libpango1.0-0 (>= 1.22.0), libreadline5 (>= 5.2), libx11-6, libxcb-atom1 (>= 0.3.3), libxcb-aux0 (>= 0.3.3),
libxcb-event1 (>= 0.3.3), libxcb-icccm1 (>= 0.3.3), libxcb-image0 (>= 0.3.3), libxcb-keysyms0 (>= 0.3.3), libxcb-property1 (>=
0.3.3), libxcb-randr0, libxcb-render-util0 (>= 0.3.3), libxcb-render0, libxcb-shm0, libxcb-xinerama0, libxcb-xtest0, libxcb1 (>=
1.1.92), menu
Рекомендуются: x11-xserver-utils
Предоставляют: x-window-manager
Описание: highly configurable, next generation framework window manager for X
Highly configurable window manager for X. It is primarly targeted at power users, developers and any people dealing with every day computing tasks and want
to have fine-grained control on its graphical environment.
awesome is very extensible and programmable using the Lua programming language. It provides an eaasily usable and very-well documented API to configure and
define the behaviour of your window manager.
awesome also supports tiled window management, multi-head, use XCB instead of Xlib for better performance, does not need mouse (can be fully keyboard
driven) and implements many of the Freedesktop standards. It also use tags instead of workspace, which gives better flexibility on windows display.
Remote control is possible via a socket or D-Bus.
Сайт: http://awesome.naquadah.org
Пакет: awesome
Новый: да
Состояние: установлен
Автоматически установлен: нет
Версия: 3.2-1
Приоритет: необязательный
Раздел: x11
Сопровождающий: Julien Danjou <[email protected]>
Размер в распакованном виде: 1745k
Зависимости: libc6 (>= 2.1), libcairo2 (>= 1.6.4-5~), libdbus-1-3 (>= 1.0.2), libev3 (>= 3.0), libglib2.0-0 (>= 2.12.0), libimlib2, liblua5.1-0, libncurses5
(>= 5.6+20071006-3), libpango1.0-0 (>= 1.22.0), libreadline5 (>= 5.2), libx11-6, libxcb-atom1 (>= 0.3.3), libxcb-aux0 (>= 0.3.3),
libxcb-event1 (>= 0.3.3), libxcb-icccm1 (>= 0.3.3), libxcb-image0 (>= 0.3.3), libxcb-keysyms0 (>= 0.3.3), libxcb-property1 (>=
0.3.3), libxcb-randr0, libxcb-render-util0 (>= 0.3.3), libxcb-render0, libxcb-shm0, libxcb-xinerama0, libxcb-xtest0, libxcb1 (>=
1.1.92), menu
Рекомендуются: x11-xserver-utils
Предоставляют: x-window-manager
Описание: highly configurable, next generation framework window manager for X
Highly configurable window manager for X. It is primarly targeted at power users, developers and any people dealing with every day computing tasks and want
to have fine-grained control on its graphical environment.
awesome is very extensible and programmable using the Lua programming language. It provides an eaasily usable and very-well documented API to configure and
define the behaviour of your window manager.
awesome also supports tiled window management, multi-head, use XCB instead of Xlib for better performance, does not need mouse (can be fully keyboard
driven) and implements many of the Freedesktop standards. It also use tags instead of workspace, which gives better flexibility on windows display.
Remote control is possible via a socket or D-Bus.
Сайт: http://awesome.naquadah.org
Тема тайлов не раскрыта.
"Таким образом, если вы владеете C, рекомендую написать патч к ядру".
Не это, ИМХО, нужно показывать.
ЗЫ: юзаю awesome3 сейчас, но вовсе не по тем причинам, которые вы перечислили.
Таким образом, если вы владеете Lua, рекомендую попробовать awesome
"Таким образом, если вы владеете C, рекомендую написать патч к ядру".
Для начала приведу скриншот GIMP в awesome
Не это, ИМХО, нужно показывать.
ЗЫ: юзаю awesome3 сейчас, но вовсе не по тем причинам, которые вы перечислили.
Но даже если вы не владеете Lua (об этом говорил Юрий), вы сможете подправить конфиг под свои нужды.
Вообще-то, как говорил Юрий, как говорил автор программы:
We're talking about Lua, so first, learn Lua. Don't want to? Do not use awesome 3 and stop reading right now.
Что в вольном переводе означает: Мы говорим о Lua. Во-первых, выучите Lua. Не хотите? Не пользуйтесь awesome 3 и перестаньте читать этот текст прямо сейчас.
Он цитировал автора программы, а сам добавил что не знает луа и его убивает "элитариность"
Оба-на! Официальный сайт Awesome переехал на мылинукс :)
Скоро тайлингисты перестанут показывать GIMP, так как он станет однооконным.
Скоро тайлингисты перестанут показывать GIMP, так как он станет однооконным.
C - включения
С С-функцией можно ассоциировать некоторые значения, это делается с помощью механизма С-включений. Такие значения называеются внешними значениям и доступны в функции независимо от того, где она вызвана (смотрите lua_pushcclosure).
Откуда бы C-функция не вызывалась, эти внешние значения доступны через специальные псевдо-индексы. Их можно получить с помощью lua_upvalueindex. Первое ассоциированное с функцией значение доступно по индексу lua_upvalueindex(1), и так далее. В случае вызова lua_upvalueindex(n), где nбольше количества внешних значения этой функции, вернется допустимый с точки зрения стека индекс (но он будет указывать неизвестно на что).
С С-функцией можно ассоциировать некоторые значения, это делается с помощью механизма С-включений. Такие значения называеются внешними значениям и доступны в функции независимо от того, где она вызвана (смотрите lua_pushcclosure).
Откуда бы C-функция не вызывалась, эти внешние значения доступны через специальные псевдо-индексы. Их можно получить с помощью lua_upvalueindex. Первое ассоциированное с функцией значение доступно по индексу lua_upvalueindex(1), и так далее. В случае вызова lua_upvalueindex(n), где nбольше количества внешних значения этой функции, вернется допустимый с точки зрения стека индекс (но он будет указывать неизвестно на что).
Из документации Lua 5.1
А так, lua_pushcfunction