Awesome (tiling window manager)

Автор Razzeeyy, 03 октября 2011, 00:45:15

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

Razzeeyy

Здравствуйте.

Для начала немного лирики: (под спойлером)
Открыть содержимое (спойлер)
Сначала я сидел как и все на обычных и комплексных DE (Desktop Environment, напр. GNOME, KDE, LXDE, XFCE и т.п.), но потом мне захотелось более минималистичных "рабочих сред" (потому как в стандартных DE, расчитанных на большой круг пользователей поставляется довольно много программ ненужных мне.)
И вот я открыл для себя WM (Window Manager, напр. openbox, icewm, e17, window maker, xmonad, awesome, тысячи их).
Сперва сел на опенбокс, сначала было дико привыкать и допиливать сырой WM под себя (ставить панели, треи, и прочие приложения нужные для работы) но со временем все настроив, я увидел что работать стало гораздо удобнее, да притом еще получился выйгрыш в производительности машины. Время шло, со временем мне стал надоедать опенбокс... и вот в джабер конфе как то разговор зашел о тайловых WM. Сначало было трудно решится попробовать... поскольку было представление о том что это какое то дикое и трудное...
Но всетаки любопытство меня перебороло и я решился попробовать awesome. К своему удивлению, я обнаружил что это не такая уж дикая штука, скорее даже наоборот удобная. Тут нету этих достающих милиметровых рамок у окон, быть снайпером для ресайза окна тут ненадо. Все приятно и (почти) интуитивно понятно, Управление с клавиатуры очень экономит время и нервы. Потом еще и подсадил bulatus'a на awesome :)) (меня самого подсадил eof)

Вообщем вот такая лирика на пока.
[свернуть]

Что это?
Цитата: http://ru.wikipedia.org/wiki/AwesomeAwesome — динамический оконный менеджер для X Window System. Его разработка началась в сентябре 2007 года в результате ответвления от dwm. Это миниатюрный и быстрый оконный менеджер, поддерживающий несколько вариантов расположения окон (например, «плавающий», когда положение окон не фиксируется, и пользователь может перетаскивать их, как в большинстве популярных менеджеров). Awesome, как фреймовый оконный менеджер, стремится предоставить всё необходимое для полного управлениями окнами без помощи мыши.

Awesome доступен для многих Unix и Unix-подобных ОС, таких как Linux, FreeBSD, NetBSD и OpenBSD.

Начиная с версии 3.0, выпущенной 18 сентября 2008, Awesome использует библиотеку XCB для взаимодействия с X-сервером. Таким образом, это первый оконный менеджер, использующий библиотеку XCB вместо традиционной Xlib. Также, есть поддержка языка разметки pango и D-Bus для межпроцессного взаимодействия. Конфигурационные файлы используют язык lua.

Видео примеры?
Цитироватьhttp://www.youtube.com/watch?v=IdbTVHCdZW8
http://www.youtube.com/watch?v=9OnYBKZNHrs
http://www.youtube.com/watch?v=M29qJdUANFY
http://www.youtube.com/watch?v=HHJ-48Cz_sk

Как установить?
ЦитироватьДля дистрибутива Debian linux:
$ sudo apt-get install awesome
или
$ sudo aptitude install awesome

Где можно получить помощь?
ЦитироватьAwesome Вики: https://awesome.naquadah.org/wiki/Main_Page/ru

Хочу композитинг!
ЦитироватьСледовательно надо использовать xcompmgr.
В Debian установить его можно так
$ sudo aptitude install xcompmgr

Для того чтобы включить только композитинг, без прочих плюшек
$ xcompmgr

С тенями
$ xcompmgr -cC
С тенями и плавным появлением окон
$ xcompmgr -cCfF
Про остальные плюшки и настройки читаем man.

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

Как заставить окно при запуске появляться на определенном теге и/или отображаться в плавающем режиме?
ЦитироватьПо умолчанию в конфиге есть такая секция (под спойлером):
Открыть содержимое (спойлер)
-- {{{ Rules
awful.rules.rules = {
    -- All clients will match this rule.
    { rule = { },
      properties = { border_width = beautiful.border_width,
                     border_color = beautiful.border_normal,
                     focus = true,
                     keys = clientkeys,
                     buttons = clientbuttons } },
    { rule = { class = "MPlayer" },
      properties = { floating = true } },
    { rule = { class = "pinentry" },
      properties = { floating = true } },
    { rule = { class = "gimp" },
      properties = { floating = true } },
    -- Set Firefox to always map on tags number 2 of screen 1.
    -- { rule = { class = "Firefox" },
    --   properties = { tag = tags[1][2] } },
}
-- }}}
[свернуть]

Именно в этой секции описывается большинство (если не все) правил поведения окон.
В конце есть закоментированный пример:
    -- Set Firefox to always map on tags number 2 of screen 1.
    -- { rule = { class = "Firefox" },
    --   properties = { tag = tags[1][2] } },

Он демонстрирует как "привязать" фаерфокс к тегу номер 2 (несмотря на то какие названия вы поставили тегам, внутри конфига к ним все равно нужно обращаться по цифрам).

Таким образом, добавляя аналогичные секции в конфиг (вставляем после примера про фаерфокс) мы можем контролировать другие приложения, по образцу:
{ rule = { class = "класс_приложения" },
  properties = { tag = tags[экран][тег] } },

Где <класс_приложения> заменяем на класс приложения (привет, КЭП), класс можно узнать командой
Цитировать$ xprop | grep "CLASS"
после чего клацнув на нужное приложение.
А <экран> и <тег> заменяем на номер экрана и тега.

ЦитироватьВНИМАНИЕ: для того чтобы изменения конфига вступили в силу, нужно перезапустить awesome, сделать это можно стандартной комбинацией клавиш:
mod+ctrl+r

Вот несколько примеров:
-- pidgin на третьем теге первого экрана
{ rule = { class = "Pidgin" },
      properties = { tag = tags[1][3] } },
-- luakit на втором теге первого экрана
    { rule = { class = "luakit" },
      properties = { tag = tags[1][2] } },
-- code::blocks на четвертом теге первого экрана
    { rule = { class = "Codeblocks" },
      properties = { tag = tags[1][4] } },


Для того чтобы привязать несколько тегов к окну нужно сделать следующее:
-- XTerm на пятом и шестом теге первого экрана
{ rule = { class = "XTerm" }, callback = function(c) c:tags({tags[1][5], tags[1][6]}) end},


Если хочется задать окну плавающий режим:
-- Geeqie появиться на текущем теге в плавающем режиме.
{ rule = { instance = "geeqie" }, properties = {floating = true}},

Какие есть альтернативы?
Цитироватьсмотреть здесь.

Для тех кто испытывает трудности с английским языком приведу (под спойлером) перведенный man awesome от 06/29/2011
Открыть содержимое (спойлер)
AWESOME(1)                                  AWESOME(1)



NAME
       awesome - awesome window manager

SYNOPSIS
       awesome [-v | --version] [-h | --help] [-c |
       --config FILE] [-k | --check]

DESCRIPTION
       awesome это оконный менеджер для X. Он управляет окнами в различных расположениях,
       таких как плавающее или мозачиное(тайловое). Любое расположение может быть
       применено динамически, улучшая рабочее пространство для используемых приложений и
       выполняющихся задач. В мозаичном (тайловом) режиме (расположении) рабочее
       пространство поделено на "мастер зону" и "стековую (стопочную) зону". Мастер зона
       содержит окна, которые требуют большего внимания, тогда как стековая зона содержит
       все остальные окна. В плавающем режиме (расположении) можно свободно изменять
       размер окон, и перемещать их (по аналогии с "традиционными" WM). Диалоговые окна
       всегда управляются как плавающие, не смотря на то какой режим используется в данный
       момент. Спиральный и  "сокращенный"(оригинал: dwindle, неуверен в переводе этого
       термина) расположения это частные случаи тайлового режима, в них стековая зона
       располагается по спиарали или как прямоугольный фрактал.

       В awesome окна сгрупированы по тегам. Каждое окно может быть отмечено одним или
       более тегами. Выбор тега (для отображения) приводит к отображению всех окон
       помеченых этим тегом.

       Awesome может содержать небольшие вибоксы (wiboxes) которые могут отображать все
       что вы захотите: все возможные теги, индикацию текущего расположения, заголовки
       видимых окон, текст, и так далее.

OPTIONS
       -v, --version
           Напечатать текущую версию на стандартный вывод, затем выйти.

       -h, --help
           Напечатать вспомогательную информацию, затем выйти.

       -c, --config FILE
           Использовать альтернативный файл конфигурации вместо:
           $XDG_CONFIG_HOME/awesome/rc.lua.

       -k, --check
           Проверить правильность синтаксиса в конфигурационном файле.

DEFAULT MOUSE BINDINGS  (привязки мыши по умолчанию)
   Навигация
       Button1 на имени тега
           Отобразить тег.

       Button4, Button5 на имени тега
           Переключится на предыдуший/следующий тег.

       Button4, Button5 на главном окне (скорее всего на "раб. столе")
           Переключится на предыдуший/следующий тег.

       Button1, Button3, Button4, Button5 на индикаторе текущего расположения (режима)
           Переключиться на предыдуший или следующий режим.

   Модификация расположения (Layout modification)
       Mod4 + Button1 на измени тега
           Пометить текущее окно только этим тегом.

       Mod4 + Button3 на имени тега
           Добавить/Снять метку этого тега с текущего окна.

       Button3 на имени тега
           Добавить этот тег к текущему отображению.

       Mod4 + Button1 на окне
           Переместить окно.

       Mod4 + Button3 на окне
           Изменить размер окна.

DEFAULT KEY BINDINGS (привязки клавиш по умолчанию)
   Управление оконным менеджером (Window manager control)
       Mod4 + Control + r
           Перезапустить awesome.

       Mod4 + Shift + q
           Выйти из awesome.

       Mod4 + r
           Показать командную строку.

       Mod4 + x
           Показать командную строку для запуска кода на Lua.

       Mod4 + Return
           Запустить эмулятор терминала.

       Mod4 + w
           Открыть главное меню

   Окна
       Mod4 + Shift + r
           Перерисовать выбранное окно.

       Mod4 + m
           Максимизировать окно.

       Mod4 + n
           Минимизировать окно.

       Mod4 + Control + n
           Восстановить минимизированные окна.

       Mod4 + f
           Перевести окно в полноэкранный режим.

       Mod4 + Shift + c
           Завершить выбранное окно.

       Mod4 + t
           Задать окну положение "поверх всех".

   Навигация
       Mod4 + j
          Выбрать следующее окно.

       Mod4 + k
           Выбрать предыдущее окно.

       Mod4 + u
           Выбрать первое актуальное (urgent) окно.

       Mod4 + Left
           Отобразить предыдущий тег.

       Mod4 + Right
           Отобразить следующий тег.

       Mod4 + 1-9
           Переключиться на тег номер 1-9.

       Mod4 + Control + j
           Выбрать (focus) следующий экран.

       Mod4 + Control + k
           Выбрать (focus) предыдущий экран.

       Mod4 + Escape
           Отобразить последнее(прошлое) множество выбранных тегов.

   Layout modification
       Mod4 + Shift + j
           Поменять позицию окна со следующим окном.

       Mod4 + Shift + k
           Поменять позицию окна с предыдущим окном.

       Mod4 + o
           Отправить окно на следующий экран.

       Mod4 + h
           Уменшить ширину мастер зоны на 5%.

       Mod4 + l
           Увеличить ширину мастер зоны на 5%.

       Mod4 + Shift + h
           Увеличить количество окон ("ячеек под окна") в мастер зоне на 1.

       Mod4 + Shift + l
           Уменшить количество окон ("ячеек под окна") в мастер зоне на 1.

       Mod4 + Control + h
           Увеличить количество колонок (под окна) в стековой зоне на 1.

       Mod4 + Control + l
           Уменшить количество колонок (под окна) в стековой зоне на 1.

       Mod4 + space
           Переключиться на следующий режим расположения окон.

       Mod4 + Shift + space
           Переключиться на предыдущий режим расположения окон.

       Mod4 + Control + space
           Включить/выключить плавающий режим для текущего окна.

       Mod4 + Control + Return
           Поменять местами выбранное окно с окном в мастер зоне.

       Mod4 + Control + 1-9
           Включить/выключить отображение данного тега.

       Mod4 + Shift + 1-9
           Пометить окно данным тегом.

       Mod4 + Shift + Control + 1-9
           Добавить/Убрать отметку данного тега с окна.

       Mod4 + Shift + F1-9
           Tag marked clients with tag. (Пометить отмеченые окна данным тегом) (я хз, что это делает, у меня помоему даже не работает, или не догнал как использовать)

CUSTOMIZATION
       awesome можно настроить под свои нужды,
       для этого надо создать свой файл конфигурации:
       $XDG_CONFIG_HOME/awesome/rc.lua file.

SIGNALS
       awesome можно перезапустить послав ему сигнал:
       SIGHUP.

SEE ALSO
       awesomerc(5) awesome-client(1)

BUGS
       На данный момент в awesome нету багов.
       Возможно только неожиданное поведение (unexpected behaviors).

AUTHORS
       Julien Danjou <julien@danjou.info[1]> and others

WWW
       http://awesome.naquadah.org

NOTES
        1. julien@danjou.info
           mailto:julien@danjou.info



                      06/29/2011            AWESOME(1)
[свернуть]
Facts are Great.
           Solutions are Beautiful.
                             Action is Golden.