Jump to content

# awesome (Русский)

4 languages

- Deutsch
- English
- 日本語
- 中文（简体）

From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи awesome. Дата последней синхронизации: 20 января 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- Оконный менеджер
- Сравнение тайловых оконных менеджеров
- Среда рабочего стола
- Экранный менеджер
- Функциональность файлового менеджера
- Меню Xdg

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

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

## Установка

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

## Запуск

Запустите `awesome` с помощью xinit. Для того, чтобы использовать входящий в комплект файл xsession, смотрите статью Экранный менеджер.

### GNOME

Вы можете настроить GNOME использовать awesome как визуальный интерфейс, но держать GNOME работющем в фоновом режиме. Смотрите awesome-gnomeAUR.

### XFCE

Смотрите Xfce (Русский)#Использовать сторонний оконный менеджер.

## Настройка

Основанный на языке программирования lua, файл настроек находится в `~/.config/awesome/rc.lua`.

### Создание файла настроек

Во-первых, создайте новый каталог, необходимый в следующем шаге:

    $ mkdir -p ~/.config/awesome/

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

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

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

Дополнительная информация о настройке доступна в разделе Configuration в документации awesome.

#### Примеры

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

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

- Тема со скриншотами Awesome
- Настройки Awesome от Setkeh
- User configuration that supports different themes, including a status bar
- Awesome configuration with two modern themes

### Расширения

Несколько расширений, доступных для awesome:

Расширение | Функциональность | Версия
--- | --- | ---
Revelation | Поверхностный просмотр всех открытых клиентов | Awesome 3.5+
Shifty | Динамические тэги | Awesome 3.5
Naughty | Всплывающие уведомления | Awesome 3.5+
Vicious Obvious Bashets | Дополнительные виджеты | Awesome 3.5

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

Для использования XDG Autostart установите xorg-xrdb и dex и добавьте следующие строки в файл `~/.config/awesome/rc.lua`:

    ~/.config/awesome/rc.lua

    awful.spawn.with_shell(
        'if (xrdb -query | grep -q "^awesome\\.started:\\s*true$"); then exit; fi;' ..
        'xrdb -merge <<< "awesome.started:true";' ..
        -- list each of your autostart commands, followed by ; inside single quotes, followed by ..
        'dex --environment Awesome --autostart'
        )

Другой способ — создать скрипт `autorun.sh` со следующим содержимым:

    ~/.config/awesome/autorun.sh

    #!/bin/sh

    run() {
      if ! pgrep -f "$1" ;
      then
        "$@"&
      fi
    }

Не забудьте сделать его исполняемым.

Для добавления программ автозапуск просто добавляйте строки вида `run "программа [аргументы]"` в файл `autorun.sh`. Функция `run` ищет указанную программу среди запущенных процессов и запускает её, только если ничего не нашлось. Проверьте корректность файла, попробовав запустить его напрямую:

    $ ~/.config/awesome/autorun.sh

И, если всё хорошо, пропишите его в файле настроек:

    ~/.config/awesome/rc.lua

    awful.spawn.with_shell("~/.config/awesome/autorun.sh")

### Выбор раскладки клавиатуры

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

#### С помощью setxkbmap

В стандартных настройках awesome уже активирован виджет раскладки.

Чтобы временно добавить несколько доступных раскладок, выполните

    $ setxkbmap -layout "us,ru"

Клик по виджету будет переключать раскладку. Если вы хотите переключать раскладки с помощью клавиатуры, к команде можно добавить, например, `-option "grp:alt_shift_toggle"` для переключения с помощью `Shift+Alt`. То есть полная команда будет выглядеть так:

    $ setxkbmap -layout "us,ru" -option "grp:alt_shift_toggle"

Пример для добавления фонетической русской раскладки:

    $ setxkbmap -model pc105 -option "grp:shifts_toggle,compose:sclk" "us,ru(phonetic_YAZHERTY)"

где

- в качестве клавиши Compose используется Scroll Lock, а переключение раскладки настроено на Left Shift + Right Shift;
- используется клавиатура со 105 клавишами.

Чтобы сделать изменения постоянными, добавьте команду в автозапуск. Например, если вы используете LightDM, можно добавить команду в файл .xprofile.

#### С помощью rc.lua

Начиная с версии 4, в awesome можно настроить переключение раскладок. Для переключения раскладки с помощью `Shift+Alt` добавьте следующие две строки в `globalkeys`:

    ~/.config/awesome/rc.lua

    -- {{{ Key bindings
    globalkeys = gears.table.join(
        -- ...
        awful.key({ "Shift" }, "Alt_L", function () mykeyboardlayout.next_layout(); end),
        awful.key({ "Mod1" }, "Shift_L", function () mykeyboardlayout.next_layout(); end)
    )

Необходимо заранее настроить несколько раскладок, например, с помощью setxkbmap или в файлах настроек X.

Команду для добавления раскладок можно добавить в #Автозапуск программ.

#### С помощью Xorg

Смотрите статью Конфигурация клавиатуры в Xorg.

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

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

Тема по-умолчанию содержится в `/usr/share/awesome/themes/default`. Скопируйте её `~/.config/awesome/themes/default` и измените `theme_path` в `rc.lua`.

    -- beautiful.init(gears.filesystem.get_configuration_dir() .. "/themes/default/theme.lua")
    local theme_path = string.format("%s/.config/awesome/themes/%s/theme.lua", os.getenv("HOME"), "default")
    beautiful.init(theme_path)

Можно скопировать другие темы и заменить «default» на, например, «sky», «gtk», «zenburn» и т.д. — локальные копии тем легко изучать, изменять и тестировать. Смотрите [1] для информации о дополнительных параметрах тем. Например, чтобы добавить промежуток между окнами, добавьте

    beautiful.useless_gap = 5

в файл `rc.lua`.

#### Обои рабочего стола

Beautiful может обрабатывать ваши обои, поэтому вам не нужно устанавливать их в ваших файлах `.xinitrc` или `.xsession`. Это позволяет иметь конкретные обои для каждой темы.

Есть два способа установить обои:

- в вашей копии файла `theme.lua`:

      -- абсолютный путь
      theme.wallpaper = "/путь/к/фону.png"

      -- относительно вашего каталога themes
      theme.wallpaper = theme_path .. "путь/к/фону.png"

- или в файле настроек `rc.lua`, где-нибудь между `beautiful.init` и `local function set_wallpaper`:

      -- абсолютный путь
      beautiful.wallpaper = "/путь/к/фону.png"

      -- относительно каталога настроек
      beautiful.wallpaper = awful.util.get_configuration_dir() .. "путь/к/фону.png"

Можно выбирать случайные обои с помощью такого скрипта: [2] — добавьте его в `rc.lua`, обновив настройки под ваши нужды. Модификация скрипта, которая умеет сама считывать список файлов из указанного каталога: [3].

## Советы и рекомендации

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

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

    awful.key({ modkey }, "b",
              function ()
                  myscreen = awful.screen.focused()
                  myscreen.mywibox.visible = not myscreen.mywibox.visible
              end,
              {description = "toggle statusbar"}
    ),

Показывать wibox (или выполнять другие действия) только при нажатой Mod-клавише невозможно из awesome, но есть python-скрипт для этого: autohidewibox.

### Скриншот (снимок экрана)

Смотрите статью Keyboard input (Русский) для правильного назначения кнопки `PrtSc`. Затем установите какую-нибудь программу для создания скриншотов например scrot.

Добавьте в массив `globalkeys`:

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

Эта функция сохраняет скриншоты внутри `~/screenshots/`, измените путь/папку при необходимости.

### Удаление пробелов окна

Начиная с версии awesome 3.4, можно удалить небольшие зазоры между окнами; в awful.rules.rules таблице есть раздел properties, добавьте к нему

     size_hints_honor = false

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

Смотрите Xorg (Русский)#Композит.

В awesome 3.5, прозрачность окна можно установить динамически с помощью сигналов . Например, `rc.lua` будет содержать следующее:

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

#### wibox'ы

В awesome есть встроенная поддержка псевдо-прозрачности. Чтобы задействовать её, добавьте 2 шестнадцатеричные цифры к цветам в вашем файле темы (например, `~/.config/awesome/themes/default/theme.lua`, который, как правило, копия `/usr/share/awesome/themes/default/theme.lua`) как показано здесь:

    theme.bg_normal = "#000000AA"

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

Чтобы менять прозрачность текущего окна, нажатием `Modkey + PgUp/PgDown`, можно установить transset-dfAUR и внести следующие изменения в вашем `rc.lua`:

    globalkeys = gears.table.join(
        -- Ваше сочетание клавиш
        [...]
        awful.key({ modkey }, "Next", function (c)
            awful.util.spawn("transset-df --actual --inc 0.1")
        end),
        awful.key({ modkey }, "Prior", function (c)
            awful.util.spawn("transset-df --actual --dec 0.1")
        end),
        -- Другое ваше сочетание клавиш
        [...]
    )

### Промежуток между виджетами

Стандартный файл `rc.lua` размещает в wibox'е виджеты, в том числе значок раскладки клавиатуры и часы, с очень маленьким промежутком между ними. Его можно увеличить с помощью свойства `spacing`:

           { -- Right widgets
           layout = wibox.layout.fixed.horizontal,
           spacing = 10,
           mykeyboardlayout,
           ...

### ImageMagick

You may have problems if you set your wallpaper with imagemagick's display command. It does not work well with xcompmgr. Please note that awsetbg may be using display if it does not have any other options. Installing habak, feh, hsetroot or whatever should fix the problem (grep -A 1 wpsetters /usr/bin/awsetbg to see your options).

### Передача информации виджетам при помощи 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.

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

    $ awesome -k rc.lua

Вы должны также изменить `modkey+R` данное сочетание клавиш, чтобы запустить другое приложение запуска вместо встроенного в awesome. Для примеров смотрите List of applications/Other#Application launchers. Не забудьте добавить:

          properties = { floating = true } },
        { rule = { instance = "$ваше_запускаемое_приложение" },

в ваш `rc.lua`.

### Каталоги приложений в строке меню

awesome содержит menubar. По умолчанию при нажатии `Mod+p` откроется похожее на dmenu меню приложений в верхней части экрана. Оно ищет файлы `.desktop` в каталогах `$XDG_DATA_DIRS/applications/` и `$XDG_DATA_HOME/applications/`.

Чтобы добавить или заменить эти каталоги, можно изменить `menubar.menu_gen.all_menu_dirs`:

    ~/.config/awesome/rc.lua

    table.insert(menubar.menu_gen.all_menu_dirs, "/path/to/custom/applications/")

Стоит отметить, что файлы `.desktop` перечитываются каждый раз при запуске awesome, тем самым замедляя запуск. Если вы запускаете программы другим способом, то меню можно отключить в `rc.lua` путём удаления `local menubar = require("menubar")` и других упоминаний переменной `menubar`.

### Всплывающие меню

Существует простое меню в awesome 3, - упрощённое пользовательское меню. [4] Если вы хотите меню freedesktop.org, смотрите тут awesome-freedesktop.

Если вы предпочитаете видеть более традиционное меню приложений, когда вы щёлкаете по иконке Awesome или делаете щелчок правой кнопкой мышки по пустому участку рабочего стола, вы можете воспользоваться инструкциями, приведёнными в статье Xdg-menu (Русский)#Awesome. Однако это меню не обновляется при добавлении или удалении программ. Поэтому не забывайте выполнять команду для обновления вашего меню. Она может выглядеть примерно так:

     xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu >~/.config/awesome/archmenu.lua

### Заголовки окон

Включить заголовки окон в awesome легко, просто установите в файле настроек переменную titlebars_enabled в true (в разделе `Rules`):

       { rule_any = {type = { "normal", "dialog" }
         }, properties = { titlebars_enabled = true }
       },

Тем не менее, вы можете захотеть иметь возможность включения или отключения заголовков окон. Для этого вы можете добавить сочетание клавиш в clientkeys:

       -- working toggle titlebar
       awful.key({ modkey, "Control" }, "t", function (c) awful.titlebar.toggle(c)         end,
                 {description = "Show/Hide Titlebars", group="client"}),

Если вы хотите по умолчанию скрыть заголовки окон, выполните эту функцию сразу после создания заголовка окна (в обработчике сигнала `"manage"`):

    awful.titlebar.hide(c)

### Уведомление о состоянии батареи

Этот пост в блоге содержит пример скрипта для `rc.lua`, показывающего простое уведомление о состоянии батареи. Заметьте, что для него требуется модуль naughty для уведомлений (установлен по умолчанию в версии 3.5). Ещё примеры есть на сайте awesome.

### Мультимедийные клавиши

Можно управлять громкостью и статусом воспроизведения с клавиатуры с помощью amixer (пакет alsa-utils) и playerctl. Назначьте выполнение этих команд на соответствующие мультимедийные клавиши:

       -- Volume Keys
       awful.key({}, "XF86AudioLowerVolume", function ()
         awful.util.spawn("amixer -q -D pulse sset Master 5%-", false) end),
       awful.key({}, "XF86AudioRaiseVolume", function ()
         awful.util.spawn("amixer -q -D pulse sset Master 5%+", false) end),
       awful.key({}, "XF86AudioMute", function ()
         awful.util.spawn("amixer -D pulse set Master 1+ toggle", false) end),
       -- Media Keys
       awful.key({}, "XF86AudioPlay", function()
         awful.util.spawn("playerctl play-pause", false) end),
       awful.key({}, "XF86AudioNext", function()
         awful.util.spawn("playerctl next", false) end),
       awful.key({}, "XF86AudioPrev", function()
         awful.util.spawn("playerctl previous", false) end),

### Экранная клавиатура Steam

Экранная клавиатура Steam, активируемая с помощью Steam Controller, может зависнуть после попытки ввести один символ. Это происходит потому, что окно, которое должно получить ввод, должно иметь фокус, и клавиатура будет ждать, пока этот ввод не будет успешно отправлен. Ручное переключение фокуса на другое окно отправит ввод на него, и клавиатура отвиснет до следующей попытки ввода символа.

Хитрость заключается в том, чтобы предотвратить получение фокуса клавиатурой. Добавьте следующий сигнал в вашу конфигурацию (или объедините с существующим сигналом focus):

    client.connect_signal("focus", function(c)
        if awful.rules.match(c, { name = "^Steam Keyboard$" }) then
            awful.client.focus.history.previous()
        end
    end)

Это будет возвращать фокус предыдущему окну каждый раз, когда фокус переходит на клавиатуру. Поскольку ввод на клавиатуре обрабатывается клиентом Steam и потому не требует фокуса, ввод текста теперь будет работать правильно.

## Решение проблем

### Отладка rc.lua

Xephyr позволяет запускать X, вложенный в окно клиента другого Х. Это позволяет проверять работоспособность `rc.lua`, не нарушая работу текущего сеанса. Начните с копирования `rc.lua` в новый файл (например `rc.lua.new`), и изменяйте его по мере необходимости. Затем запустите новый экземпляр awesome в Xephyr, передав ему путь к файлу настроек `rc.lua.new`:

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

Преимущество такого способа заключается в том, что вы не нарушите работу текущего рабочего стола awesome, избежите потенциальный сбой приложений X и потерю работоспособности. После завершения настройки и тестирования скопируйте `rc.lua.new` в `rc.lua` и перезапустите awesome.

#### awmtt

awmttAUR (Awesome WM Testing Tool — Утилита тестирования Awesome WM) — простой скрипт-обёртка над Xephyr. По умолчанию он будет использовать `~/.config/awesome/rc.lua.test`. Если он не может найти тестовый файл, он будет использовать ваш фактический `rc.lua`. Вы также можете указать местоположение файла настроек, который вы хотите проверить:

    $ awmtt start -C ~/.config/awesome/rc.lua.new

Когда вы закончите тестирование, закройте окно:

    $ awmtt stop

Или сразу смотрите изменения, которые вы делаете в файл настроек с помощью следующей команды:

    $ awmtt restart

### Файл журналов

Если вы используете LightDM, awesome будет записывать ошибки в `$HOME/.xsession-errors`. Если вы используете `.xinitrc` для запуска awesome, смотрите вопрос «Where are logs, error messages or something?» на странице FAQ.

### Клавиша Mod4

Awesome рекомендует переназначить `mod4`, которой по умолчанию является клавиша `Super` («Windows»). Если по какой-то причине она не распознаётся как `mod4`, используйте xmodmap чтобы узнать её. Для того чтобы изменить назначение, воспользуйтесь `xev`, чтобы найти код клавиши и имя клавиши для сопоставления. Затем добавьте нечто похожее в `~/.xinitrc`

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

В этом случае проблемой является то, что иногда xorg распознаёт код клавиши 115 неправильно, как клавишу 'Select'. Приведенная выше команда явно перераспределяет код ключа 115 на корректную клавишу 'Super_L'.

Для того, чтобы переназначить `mod4` с помощью `setxkbmap` (конфликтует с `xmodmap`) смотрите:

    tail -50 /usr/share/X11/xkb/rules/evdev

Для установки клавиши caps lock как `mod4` добавьте следующую строку в `~/.xinitrc`:

    setxkbmap -option caps:hyper

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

Смотрите Java (Русский)#Ошибки отрисовки приложений Java и [5].

### Eclipse: невозможно изменить размер/переместить главное окно

Если главное окно "прилипло" и вы не можете переместить его или изменить размер (используя mod4 + левую/правую клавишу мыши) отредактируйте `workbench.xml` и установите fullscreen/maximized в значение false (если оно установлено), уменьшите цифру ширины и высоты на меньшую, чем размер одного вашего экрана рабочего стола.

`workbench.xml` можно найти в `eclipse_workspace/.metadata/.plugins/org.eclipse.ui.workbench/`. Отредактируйте строку:

    <window height="xx" maximized="true" width="xx" x="xx" y="xx"

### Netbeans: автозавершение кода отображается на неправильном экране

Если у вас два дисплея и вы используете автозавершение кода (Ctrl + Space) в Netbeans, оно может отображаться на неправильном экране. Может помочь это:

    .config/awesome/rc.lua

    awful.rules.rules = {
            ...
    	{
    		rule_matches = { -- Исправление Netbeans
    			class = {
    				"sun-awt-X11-XWindowPeer", "NetBeans IDE 8.2"
    			},
    			name = {
    				"win1"
    			}
    		}, properties = { screen = 1 } -- даже если здесь экран 1, это всё равно работает и на втором экране (непонятно почему).
    	},
            ...

    }

### scrot: не получается сделать скриншот с выделением мышью с помощью сочетаний клавиш

При использовании scrot могут возникнуть проблемы с назначением сочетания клавиш для создания снимка области экрана с выделением мышью (`scrot -s`). Чтобы решить эту проблему, добавьте следующую строку в ваш `rc.lua`:

    awful.key( { modkey,	 }, клавиша, nil, function () awful.spawn("scrot -s") end)

Обратите внимание, что в функцию `awful.key` в аргумент `press` передаётся `nil`. Вместо этого функция-обработчик, которая запускает scrot, передаётся в аргумент `release`.

### YouTube: полноэкранный режим показывает как в фоновом режиме

Если видео с YouTube появляется под вашим браузером в полноэкранном режиме, или скрывается под панелью управления, то добавьте в `rc.lua`

    { rule = { instance = "plugin-container" },
      properties = { floating = true } },

Для Chromium

    { rule = { instance = "exe" },
      properties = { floating = true } },

или:

    { rule = { role = "_NET_WM_STATE_FULLSCREEN" },
      properties = { floating = true } },

Смотрите [6].

### Запретить колесу прокрутки мыши менять теги

В вашем `rc.lua` измените раздел Mouse Bindings на следующий:

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

### Xdg-menu генерирует дублирующиеся пункты меню

Xdg-menu будет генерировать дубликаты пунктов меню, если вы копируете файлы .desktop из `/usr/share/applications` в `~/.local/share/applications`, даже если предпочтительнее просто использовать пользовательские файлы вместо оригинальных, чтобы, например, задать другую тему для конкретного приложения. Одним из решений является фильтрация сгенерированного вывода через awk для удаления пунктов с именем, идентичным предыдущему пункту.

     xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu | awk -F, '{if (a!=$1) print $a; a=$1}' >~/.config/awesome/archmenu.lua

### Некоторые сочетания клавиш не работают в Xfce4

Возможно, есть пересечения в используемых сочетаниях клавиш между Xfce4 и awesome. Откройте настройки:

    $ xfce4-keyboard-settings

и посмотрите, нет ли там пересечений с сочетаниями клавиш awesome, в частности с mod-клавишей (обычно Super_L).

### Утечки памяти

Некоторые пользователи сталкиваются с утечкой памяти даже при отсутствии активности. При использовании большого количества виджетов утечка может происходить со скоростью до 5 МБ/мин. Чтобы уменьшить потребление памяти, можно выполнять более частую сборку мусора, добавив следующее в `~/.config/awesome/rc.lua`:

    -- Регулярный запуск сборщика мусора для предотвращения утечки памяти
    gears.timer {
           timeout = 30,
           autostart = true,
           callback = function() collectgarbage() end
    }

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

- https://archlinux.org.ru/forum/topic/11748/[устаревшая ссылка 2024-07-30 ⓘ] - Анатомия awesome
- https://archlinux.org.ru/forum/topic/15184/[устаревшая ссылка 2024-07-30 ⓘ] - Установка Awesome 3.5.6 и доведение его до рабочего состояния
- https://awesomewm.org/apidoc/documentation/90-FAQ.md.html - ЧаВо
- https://www.lua.org/pil/ - Программирование на Lua
- https://awesomewm.org/ - Официальный сайт awesome
- https://bbs.archlinux.org/viewtopic.php?id=88926 - поделитесь своим awesome!
- https://help.ubuntu.ru/wiki/awesome - Отличная русскоязычная документация

Categories:

- Tiling window managers (Русский)
- Dynamic window managers (Русский)

Hidden category:

- Pages with dead links