Awesome
awesome — это гибко настраиваемый, динамичный оконный менеджер для X . Прежде всего он направлен на опытных пользователей, разработчиков, да и просто людей, заинтересованных в наличие контроля над различными аспектами графического окружения. Функционал можно расширить с помощью языка программирования Lua .
Требования
Сервисы
Выберите один из:
Разное
X-сервер
Следуйте инструкциям в Xorg/Guide для получения среды X .
Запуск X-сервера
One of the following methods can be used to start X :
- Display manager : Presents the user with a graphical login screen.
- X without Display Manager : When running a single-user system, one may find display managers an unnecessary waste of resources.
Установка
USE-флаги
USE flags for x11-wm/awesome Dynamic floating and tiling window manager
dbus
|
Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
gnome
|
Add GNOME support |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
Установка
Установите x11-wm/awesome :
root
#
emerge --ask x11-wm/awesome
Конфигурация
Запуск
Для запуска awesome обратитесь к разделу Запуск X-сервера или используйте команду startx .
Чтобы использовать startx с поддержкой elogind , установите elogind и создайте следующий файл:
~/.xinitrc
exec dbus-launch --sh-syntax --exit-with-session awesome
Конфигурационный файл
Стандартный конфигурационный файл awesome находится в ~/.config/awesome/rc.lua . Если данный каталог или файл отсутсвует, его следует создать. Стандартная конфигурация поставляется в комплекте с awesome и находится по адресу /etc/xdg/awesome/rc.lua . Просто скопируйте его в домашний каталог пользователя.
Создадим каталог awesome/ :
user
$
mkdir -p ~/.config/awesome/
И скопируем туда конфигурационный файл rc.lua :
user
$
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
Если не установлен x11-terms/xterm , то следует либо установить его, либо изменить терминал по умолчанию на тот, который представлен в системе. Ниже мы используем в качестве подобного терминала konsole , часть kde-apps/konsole .
~/.config/awesome/rc.lua
-- Далее мы используем его как терминал по умолчанию.
terminal = "konsole"
После внесения изменений не помешает проверить файл на наличие ошибок:
user
$
awesome -k
✔ Configuration file syntax OK
Поддержка обоев рабочего стола очуществляется пакетом media-gfx/feh :
root
#
emerge --ask media-gfx/feh
Но можно установить обои и при помощи awsetbg , для чего следует добавить в ~/.config/awesome/theme/theme.lua следующую строку:
~/.config/awesome/theme/theme.lua
Устанавливаем обои с использованием awsetbg
theme.wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }
Или просто настройте обои в параметрах темы:
~/.config/awesome/theme/theme.lua
Настройка определенной картинки фона рабочего стола с помощью определения wallpaper
theme.wallpaper = ".config/awesome/themes/awesome-wallpaper.png"
Тэги
В awesome тэгами называются виртуальные рабочие столы, на которых запущены приложения. Можно присвоить им различные символы:
~/.config/awesome/rc.lua
-- {{{ Tags
tags = {}
for s = 1, screen.count() do
tags[s] = awful.tag({ "➊", "➋", "➌", "➍" }, s, layouts[1])
end
-- }}}
Меню
Рассмотрим пример меню awesome :
~/.config/awesome/rc.lua
-- {{{ Menu
myawesomemenu = {
{ "инструкция", terminal .. " -e man awesome" },
{ "править конфиг", editor_cmd .. " " .. awesome.conffile },
{ "перезагрузка", awesome.restart },
{ "выход", awesome.quit },
{ "перезагрузка", "reboot" },
{ "выключения", "shutdown" }
}
appsmenu = {
{ "urxvt", "urxvt" },
{ "sakura", "sakura" },
{ "ncmpcpp", terminal .. " -e ncmpcpp" },
{ "luakit", "luakit" },
{ "uzbl", "uzbl-browser" },
{ "firefox", "firefox" },
{ "chromium", "chromium" },
{ "thunar", "thunar" },
{ "ranger", terminal .. " -e ranger" },
{ "gvim", "gvim" },
{ "leafpad", "leafpad" },
{ "htop", terminal .. " -e htop" },
{ "sysmonitor", "gnome-system-monitor" }
}
gamesmenu = {
{ "warsow", "warsow" },
{ "nexuiz", "nexuiz" },
{ "xonotic", "xonotic" },
{ "openarena", "openarena" },
{ "alienarena", "alienarena" },
{ "teeworlds", "teeworlds" },
{ "frozen-bubble", "frozen-bubble" },
{ "warzone2100", "warzone2100" },
{ "wesnoth", "wesnoth" },
{ "supertuxkart", "supertuxkart" },
{ "xmoto" , "xmoto" },
{ "flightgear", "flightgear" },
{ "snes9x" , "snes9x" }
}
mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu },
{ "приложения", appsmenu },
{ "игры", gamesmenu },
{ "терминал", terminal },
{ "браузер", browser },
{ "текстовый редактор", geditor }
}
})
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
menu = mymainmenu })
-- }}}
Дата и время
Ниже приведён пример нестандартного формата времени. Для формата используется синтаксис
%Y-%m-%d %H:%M
, а
60
указывает интервал обновления.
~/.config/awesome/rc.lua
Создание виджета текстовых часов
-- {{{ Wibox
-- Create a text-clock widget
mytextclock = wibox.widget.textclock(" %Y-%m-%d %H:%M ", 60)
-- }}}
Чтобы узнать больше о различных форматах, запустите date --help .
Настройка громкости
media-sound/volumeicon позволяет использовать мультимедиа-клавиши и видеть уровень громкости при помощи иконки в трее.
root
#
emerge --ask media-sound/volumeicon
Автоматический запуск volumeicon из ~/.xinitrc :
~/.xinitrc
Фоновый запуск volumeicon при старте X
volumeicon &
exec [...]
Или же можно добавить обработку мультимедиа-клавиш прямо в конфигурации awesome :
~/.config/awesome/rc.lua
Настройка клавиш громкости
awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer -q sset Master 5%-") end)
awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -q sset Master 5%+") end)
Мультимедиа-клавиши MPD
Установите media-sound/mpc чтобы привязать мультимедия клавиши к MPD :
root
#
emerge --ask media-sound/mpc
И обновите конфиг awesome , чтобы присвоить мультимедиа-клавишам соответствующие команды:
~/.config/awesome/rc.lua
Привязка мультимедиа-клавиш
awful.key({ }, "XF86AudioNext",function () awful.util.spawn( "mpc next" ) end),
awful.key({ }, "XF86AudioPrev",function () awful.util.spawn( "mpc prev" ) end),
awful.key({ }, "XF86AudioPlay",function () awful.util.spawn( "mpc play" ) end),
awful.key({ }, "XF86AudioStop",function () awful.util.spawn( "mpc pause" ) end),
Удаление зазоров между окнами
Зазоры между окнами могут быть видимыми, наиболее заметно между окнами терминала. Их можно удалить, вставив свойство
size_hints_honor=false
в таблицу
awful.rules.rules
, например:
~/.config/awesome/rc.lua
Установка свойства size_hints_honor
awful.rules.rules = {
{ rule = { },
properties = { size_hints_honor = false, -- Remove gaps
border_width = beautiful.border_width,
border_color = beautiful.border_normal,
...
Отладка конфигурации при помощи Xephyr
Xephyr удобен для исправления ошибок, так как запускает X без клиентского окна.
user
$
Xephyr -ac -nolisten tcp -br -noreset -screen 800x600 :1
Создастся окно размерами 800x600. Чтобы запустить внутри него awsome, необходимо выполнить следующую команду:
user
$
DISPLAY=:1.0 awesome
Это запустит awesome внутри окна.
Горячие клавиши
Список наиболее полезных клавиш:
- Super + Mouse1 = переместить клиент мышью
- Super + Mouse2 = изменить размер клиента мышью
- Super + Enter = открыть терминал
- Super + r = выполнить команду
- Super + Shift + c = закрыть
- Super + m = развернуть
- Super + n = свернуть
- Super + Ctrl + n = восстановить свёрнутые
- Super + f = полноэкранный режим
- Super + Tab = переключиться на предыдущий клиент
- Super + Ctrl + Space = режим плавающих окон
- Super + j = подсветить левый
- Super + k = подсветить правый
- Super + Shift + j = переместить вправо
- Super + Shift + k = переместить влево
- Super + l = изменить размер тайлового окна
- Super + h = изменить размер тайлового окна
- Super + left / right = сменить тэг
- Super + 1-9 = сменить тэг
- Super + Shift + 1-9 = отправить окно на тэг
Для дальнейшей кастомизации awesome можно присвоить действия к комбинациям вроде Alt + Tab , чтобы, например, переключиться на предыдущее окно:
~/.config/awesome/rc.lua
Привязка клавиш Alt+TAB
-- {{{ Key bindings
globalkeys = awful.util.table.join(
...
-- alt + tab
awful.key({ "Mod1", }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
-- )}}}
Внешние ресурсы
- Пользовательские конфигурации на wiki-страничке awesome (web.archive.org)
- Desktop profile switching USE default to elogind