# awesome (Русский)

С официального сайта:

"awesome - это полностью настраиваемый современный оконный менеджер для X. Он очень быстрый, расширяемый и распространяется под GNU GPLv2 лицензией.

Ориентирован на опытных пользователей, разработчиков, людей, занимающихся вычислениями и на тех, кто желает иметь полный контроль над графической средой."

## Установка

Awesome доступен в community:

    pacman -S awesome

Git-based версия также доступна в AUR, смотрите awesome-git.

## Приступая к работе

### Использование awesome

Для запуска awesome без логин менеджера, добавьте `exec awesome` в загрузочный скрипт (т.е. ~/.xinitrc.) Для старта выполните

    startx

Также Awesome можно запустить командой:

    xinit /usr/bin/awesome

Если у вас есть проблемы доступа к оборудованию (например, монтирование USB-дисков или чтение DVD), обратитесь к документации HAL и политикам доступа (policykit). В некоторых случаях использование `exec ck-launch-session awesome` поможет решить проблему.

Чтобы запустить awesome из логин менеджера, посмотрите эту статью.

SLIM - это популярный лёгкий менеджер загрузки, рекомендуется использовать его. Для этого:

1) Отредактируйте /etc/slim.conf для запуска сессии awesome, добавьте awesome в строку сессий.
Пример:

    sessions             awesome,wmii,xmonad

2) Отредактируйте файл ~/.xinitrc

    DEFAULT_SESSION=awesome
    case $1 in
      awesome|wmii|xmonad) exec $1 ;;
      *) exec $DEFAULT_SESSION ;;
    esac

Однако, вы также можете запустить awesome без менеджера загрузки после редактирования должным образом файлов ~/.xinitrc и /etc/inittab. Обратитесь к статье Start_X_at_Boot_(Русский).

## Конфигурация

Awesome неплохо работает «из коробки», но рано или поздно вы захотите изменить что-нибудь. Конфигурация на языке Lua находится в `~/.config/awesome/rc.lua`.

### Создание файла конфигурации

Во-первых, создайте новый каталог. В нем будет храниться файл конфигурации.

    $ mkdir -p ~/.config/awesome/

Awesome попытается использовать конфигурацию, которая содержится в файле ~/.config/awesome/rc.lua. Он не создается автоматически, поэтому скопируйте шаблон:

    $ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua

Синтаксис файла конфигурации часто изменяется при обновлении awesome. Поэтому повторите эту команду, если с awesome произошло что-то непонятное или же вы хотите изменить конфигурацию.

Чтобы получить дополнительную информацию о настройке awesome, посмотрите Awesome 3 configuration wiki

### Источники для файлов конфигурации

Обратите внимание: Синтаксис конфигурации awesome регулярно меняется, поэтому Вам скорее всего придется изменить файл, который Вы скачаете.

Отличные примеры файлов rc.lua можно найти по следующим ссылкам:

- http://git.sysphere.org/awesome-configs/tree/ - конфигурации Awesome 3.4 от Adrian C. (anrxc)
- http://pastebin.com/f6e4b064e - конфигурация Darthlukan'а для awesome 3.4.
- http://www.calmar.ws/dotfiles/dotfiledir/dot_awesomerc.lua
- http://www.ugolnik.info/downloads/awesome/rc.lua (screen) - Awesome 3 с маленькими строками заголовка и состояния.
- http://github.com/nblock/config/blob/master/.config/awesome/rc.lua
- Пользовательские конфигурационные файлы на http://awesome.naquadah.org/wiki/User_Configuration_Files

### Отладка файла rc.lua при помощи Xephyr

Этот способ редактирования конфигурации предпочтителен, потому что он не изменяет текущий рабочий стол. Для начала скопируйте файл rc.lua в другой файл:

    $ cp ~/.config/awesome/rc.lua ~/.config/awesome/rc.lua.new

Затем можете изменить его как Вам необходимо. Теперь запускайте новый экземпляр awesome в Xephyr (эта программа позволяет запускать вложенный Х-сервер, screenshot), используя файл конфигурации rc.lua.new:

    $ Xephyr -ac -br -noreset -screen 1152x720 :1 &
    $ DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new

Преимущество такого подхода в том, что если изменить rc.lua.new, то не нарушится работа текущего экземпляра рабочего стола awesome (а также не потеряются все несохраненные данные, не закроются все экземпляры приложений и т.п.). Как только новые настройки Вас устроят, просто переместите новый файл с конфигурацией на место rc.lua:

    $ cp ~/.config/awesome/rc.lua.new ~/.config/awesome/rc.lua

и перезапустите оконный менеджер.

## Темы оформления

Beautiful — это библиотека lua, которая позволяет Вам задавать темы оформления для awesome из внешних файлов. С ее помощью весьма легко изменить «на лету» цвета или обои awesome без внесения изменений в файл rc.lua.

Тема по-умолчанию содержится в /usr/share/awesome/themes/default. Скопируйте ее и другие темы:

    $ cp -r /usr/share/awesome/themes/ ~/.config/awesome/themes/

Затем измените путь к теме оформления в файле rc.lua:

    $ nano ~/.config/awesome/rc.lua

Найдите строку beautiful.init('/usr/share/awesome/themes/default/theme.lua')

и замените путь на /home/$USER/.config/awesome/themes/default/theme.lua.

Подробности здесь.

Примеры тем здесь.

### Установка обоев рабочего стола

Beautiful может управлять обоями рабочего стола. Это позволяет задать различные для каждой темы обои. Настройки темы содержатся в файле theme.lua.

Например, вы можете задать обои, изменив путь в строке

theme.wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }

Обратите внимание: Чтобы команда awsetbg сработала, вам потребуется программа для установки обоев, например, Feh.

#### Случайные фоновые изображения

Чтобы случайно менять фоновые изображения, просто закомментируйте строку из пункта выше и добавьте следующие строки в .xinitrc:

    while true;
    do
      awsetbg -r <path/to/the/directory/of/your/wallpapers>
      sleep 15m
    done &

## Советы и хитрости

Не стесняйтесь добавлять советы и хитрости, которыми бы Вы хотели поделиться с другими пользователями.

### Использование awesome в GNOME в качестве оконного менеджера

Преимущество GNOME в том, что он сразу работает как нужно. Вы можете использовать awesome для отрисовки окон, а GNOME оставить всю "теневую" работу. За подробностями - в awesome wiki.

### Эффект развертывания окон как в compiz

Развертывание представляет возможность увидеть все открытые в данный момент рабочие столы.

Подробная информация здесь.

### Скрыть/показать wibox в awesome

Чтобы привязать комбинацию Modkey + b для показа/скрытия строки состояния на активном рабочем столе (как в awesome 2.3), добавьте сочетание клавиш в rc.lua:

    awful.key({ modkey }, "b", function ()
        mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible
    end),

### Снимки рабочего стола

Чтобы активировать функцию снимков рабочего стола в awesome, Вам нужна программа для захвата экрана. Для этой цели подойдет scrot - легкая в использовании утилита, которая доступна в репозиториях Arch.

Достаточно выполнить:

    # pacman -S scrot

Также Вы можете установить необязательные пакеты, идущие вместе с этим пакетом, если необходимо.

Затем нужно узнать название клавиши PtrScr, обычно это "Print", но лучше убедиться в этом.

Запускаем:

    # xev

Нажмите кнопку PtrScr, вывод программы будет выглядеть примерно так:

     KeyPress event ....
         root 0x25c, subw 0x0, ...
         state 0x0, keycode 107 (keysym 0xff61, Print), same_screen YES,
         ....

В нашем случае кнопка называется Print.

Теперь приступим к конфигурации awesome.

В блоке с назначениями клавиш (globalkeys) наберите:

     awful.key({ }, "Print", function () awful.util.spawn("scrot -e 'mv $f ~/screenshots/ 2>/dev/null'") end),

Неплохой идеей будет разместить эту строку ниже сочетания для открытия терминала.

     awful.util.spawn(terminal)

Эта функция сохраняет снимки рабочего стола в каталог ~/screenshots/, поэтому измените путь, если необходимо.

### Динамические теги

Eminent - это маленькая lua библиотека, которая позволяет быстро привязывать окна к тегам в стиле оконного менеджера wmii. Однако, eminent нацелен на то, чтобы сделать привязку к тегам максимально простой. В действительности, Вам даже не придется менять ваш rc.lua файл, eminent сделает это за Вас.

Shifty - это расширение для awesome 3, которое также осуществляет динамическую привязку к тегам. Вместе с самим расширением поставляется конфигурация, позволяющая ВАМ быть хозяином своего рабочего стола, изменив всего-то пару переменных в конфигурации и поменяв сочетания клавиш.

### Space Invaders

Space Invaders - программа-демонстрация для иллюстрации возможностей Awesome Lua API.

Учтите, что этот пакет не поставляется вместе с пакетом Awesome с релиза 3.4-rc1.

### Naughty для всплывающих уведомлений

См. awesome wiki.

### Контекстное меню

По-умолчанию, в awesome3 есть контектсное меню, и настроить его очень просто. Но если вы используете awesome версии 2.x, взгляните на awful.menu.

Пример конфигурации меню для awesome3:

    myawesomemenu = {
       { "lock", "xscreensaver-command -activate" },
       { "manual", terminal .. " -e man awesome" },
       { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
       { "restart", awesome.restart },
       { "quit", awesome.quit }
    }

    mycommons = {
       { "pidgin", "pidgin" },
       { "OpenOffice", "soffice-dev" },
       { "Graphic", "gimp" }
    }

    mymainmenu = awful.menu.new({ items = {
                                            { "terminal", terminal },
                                            { "icecat", "icecat" },
                                            { "Editor", "gvim" },
                                            { "File Manager", "pcmanfm" },
                                            { "VirtualBox", "VirtualBox" },
                                            { "Common App", mycommons, beautiful.awesome_icon },
                                            { "awesome", myawesomemenu, beautiful.awesome_icon }
                                           }
                                 })

### Еще виджеты для awesome

Виджеты в Awesome - это объекты, которые можно размещать на панелях и в заголовках окон, они могут предоставлять различную информацию о системе и очень полезны для получения доступа к этой информации прямо из оконного менеджера. Виджеты легко использовать и они обладают большой гибкостью. -- источник [Wiki:Widgets(rus)]

Библиотека виджетов Wicked (совместима с awesome вплоть до версии 3.4) добавляет новые виджеты, такие как MPD виджет, загрузка ЦП, использование оперативной памяти и т.д. Дополнительная информация на странице Wicked.

В качестве альтернативы Wicked в awesome 3.4 можно использовать:

- Vicious. Для vicious есть отличная документация.
- Obvious
- Bashets
- Blingbling

### Прозрачность

У awesome есть поддержка эффекта прозрачности через xcompmgr. Учтите, что Вам вероятно понадобится git-версия xcompmgr, которую можно найти на AUR.

Добавьте эту строчку в ~/.xinitrc

    exec xcompmgr &

Посмотрите man xcompmgr или xcompmgr для дополнительной информации.

В awesome версии 3.4, прозрачность окна можно установить динамически, используя сигналы. Например, файл rc.lua может содержать следующие строки:

    client.add_signal("focus", function(c)
                                  c.border_color = beautiful.border_focus
                                  c.opacity = 1
                               end)
    client.add_signal("unfocus", function(c)
                                    c.border_color = beautiful.border_normal
                                    c.opacity = 0.7
                                 end)

Если возникнет ошибка про add_signal, замените его на connect_signal.

Учтите, что при использовании conky, Вы должны указать, что он должен создавать собственное окно, а не использовать рабочий стол. Чтобы сделать это, отредкактируйте ~/.conkyrc:

    own_window yes
    own_window_transparent yes
    own_window_type desktop

В противном случае можно пронаблюдать, как все окна станут полностью прозрачными.

Начиная с версии awesome 3.1, имеется встроенная поддержка псевдопрозрачности для wibox'ов. Чтобы ее включить, добавьте 2 шестнадцатеричные цифры к цветам в файле конфигурации Вашей темы (~/.config/awesome/themes/default ,обычно является копией /usr/share/awesome/themes/default), как показано в примере:

    bg_normal = #000000AA

где "AA" - это значение прозрачности.

#### ImageMagick

У вас может возникнуть проблема при попытке установить обои командой display из пакета imagemagick (не очень хорошо работает с xcompmgr). awsetbg будет использовать display, если не найдет ничего более подходящего. Установите habak, feh, hsetroot или что-нибудь другое (список можно посмотреть командой grep -A 1 wpsetters /usr/bin/awsetbg).

### Автозапуск программ

См. также страница автозапуска на Awesome wiki.

В awesome есть несколько функций для запуска программ (в качестве дополнения к стандартной библиотеке Lua `os.execute`). Чтобы иметь возможность запускать программы при старте, как в GNOME или KDE, установите dex из AUR, а затем включите строку в Ваш файл rc.lua:

    os.execute"dex -a"

Если Вам нужно просто задать список программ для запуска при старте awesome, создайте таблицу со всеми командами:

    do
      local cmds =
      {
        "swiftfox",
        "mutt",
        "consonance",
        "linux-fetion",
        "weechat-curses",
        --and so on...
      }

      for _,i in pairs(cmds) do
        awful.util.spawn(i)
      end
    end

(Вы также можете запускать программы с помощью `os.execute` с окончанием '`&`', но рациональней будет задать функцию для запуска.)

Чтобы запустить программу, если она еще не запущена, воспользуйтесь командой оболочки `pgrep`, которая запустит программу только в том случае, если не обнаружит процесса с таким же именем:

    function run_once(prg)
      awful.util.spawn_with_shell("pgrep -u $USER -x " .. prg .. " || (" .. prg .. ")")
    end

Таким образом, для запуска, например, `parcellite`, только если он уже не запущен:

    run_once("parcellite")

### Передача информации виджетам при помощи awesome-client

Вы можете легко передать текст виджету. Для этого создайте новый виджет:

     mywidget = widget({ type = "textbox", name = "mywidget" })
     mywidget.text = "initial text"

Для обновления текста из внешнего источника, используйте awesome-client:

     echo -e 'mywidget.text = "new text"' | awesome-client

Не забудьте добавить виджет в раздел wibox Вашей конфигурации.

### Использование другой панели в awesome

Если вам нравится в awesome все, кроме того, как выглядит стандартная панель, то пришло время установить другую, например xfce4-panel:

    sudo pacman -S xfce4-panel

Конечно, другие панели тоже подойдут. После установки добавьте в автозапуск в rc.lua (прочтите выше, как это сделать). Также можно закомментировать секцию, которая создает wibox'ы для каждого экрана (начинается с "mywibox[s] = awful.wibox({ position = "top", screen = s })"), однако это не обязательно. Не забудьте проверить rc.lua на наличие ошибок командой

    awesome -k rc.lua

Если нужна сторонняя программа запуска, например, Xfrun4, bashrun, посмотрите секцию оконного менеджера Openbox. Можно также сменить сочетание клавиш для него на "modkey+R". Не забудьте добавить

          properties = { floating = true } },
        { rule = { instance = "$yourapplicationlauncher" },

в rc.lua.

### Запретить Nautilus'у отображать рабочий стол (Gnome3)

Запустите dconf-editor. В разделе org->background снимите галочку с "draw-background" и "show-desktop-icons". Все.

Стоит также слинковать /usr/bin/nautilus со скриптом, который выполняет 'nautilus --no-desktop', пропуская все аргументы.

### Переход с GNOME 3

Запустите 'gnome-session-properties' и удалите ненужный программы (Bluetooth Manager, Login Sounds и т.д.).

Если вы хотите избавиться от GDM, убедитесь, что в /etc/rc.conf в секции DAEMONS есть "dbus" (и "cupsd", если у вас есть принтер). Рекомендуется поставить другой логин менеджер (SLiM). Если не хотите этого делать, убедитесь, что верно отредактировали .xinitrc и поставьте что-нибудь типа devmon (AUR).

Чтобы сохранить удобные апплеты в системном лотке, а также тему оформления GTK, добавьте в rc.lua:

    function start_daemon(dae)
    	daeCheck = os.execute("ps -eF | grep -v grep | grep -w " .. dae)
    	if (daeCheck ~= 0) then
    		os.execute(dae .. " &")
    	end
    end

    procs = {"gnome-settings-daemon", "nm-applet", "kupfer", "gnome-sound-applet", "gnome-power-manager"}
    for k = 1, #procs do
    	start_daemon(procs[k])
    end

### Не менять теги колесом мыши

В файле rc.lua, секцию Mouse Bindings замените на

    -- {{{ Mouse bindings
    root.buttons(awful.util.table.join(
        awful.button({ }, 3, function () mymainmenu:toggle() end)))
    -- }}}

## Устранение неисправностей

### Кнопка Mod4

По-умолчанию, кнопкой Mod4 является Win. Если по каким-то причинам она не работает, проверьте код Вашей кнопки Mod4:

    $ xev

Должно быть 115 для левой кнопки Win. Затем включите строку в файл ~/.xinitrc:

    xmodmap -e "keycode 115 = Super_L" -e "add mod4 = Super_L"
    exec awesome

#### Mod4 key vs. IBM ThinkPad users

IBM ThinkPad не поставлялись с кнопкой Win (хотя компания Lenovo уже изменила этой традиции). Кнопка Alt по-умолчанию не используется в комбинациях, описанных в rc.lua. Это позволит Вам заменить ею кнопку Win. Чтобы сделать это, необходимо отредактировать rc.lua, заменив:

    modkey = "Mod4"

на:

    modkey = "Mod1"

Обратите внимание: В awesome используются несколько сочетаний клавиш типа Mod4 + буква на клавиатуре. Изменив Mod4 на Alt, Вы можете получить наложение некоторых сочетаний. Эти сочетания придется также перебросить на другие кнопки.

Если Вы не хотите менять стандартные сочетания для awesome, Вы можете использовать другую кнопку. Например, Caps Lock используется нечасто, поэтому можно использовать ее в качестве Mod4. Измените ~/.Xmodmap:

    clear lock
    add mod4 = Caps_Lock

и (пере)загрузите файл. Это действие изменит Caps Lock на кнопку Mod4 и Вы сможете воспользоваться стандартными настройками awesome. Вдобавок, это позволит использовать Caps Lock как Mod4 и в других X-приложениях.

### Исправление для Java приложений (серый интерфейс)

Взято с [2].

1. Установите wmname.
2. Выполните следующую команду или добавьте ее в {Filename|.xinitrc}}:

       wmname LG3D

### Brasero не определяет диски

Если Brasero не определяет диски при запуске в awesome, но отлично работает в GNOME, попробуйте запустить его командой:

    $ dbus-launch brasero

## Смотрите также

- http://awesome.naquadah.org/wiki/FAQ - ЧаВо
- http://www.lua.org/pil/ - Программирование на Lua
- http://awesome.naquadah.org/ - Официальный сайт awesome
- http://awesome.naquadah.org/wiki/FAQ/ru - страница awesome wiki
- http://www.penguinsightings.org/desktop/awesome/ - Обзор
- http://compsoc.tardis.ed.ac.uk/wiki/AwesomeWM_guide - Гайд по Awesome
- https://bbs.archlinux.org/viewtopic.php?id=88926 - поделитесь своим awesome!
- http://help.ubuntu.ru/wiki/awesome - Отличная русскоязычная документация

Categories:

- Русский
- Dynamic WMs (Русский)