AWESOME WM — гибкий тайлинговый оконный менеджер, нацеленный на использование опытными пользователями. Очень легкий и достаточно сильно расширяемый за счет использования языка программирования Lua. Существует мнение, что тайлинговые рабочие столы предназначены на использование с большими экранами, но они прекрасно себя чувствуют даже на нетбуках, где чаще всего приходится работать даже без мыши, ведь тайлинговым рабочим столам нет равных в управлении с клавиатуры.
Установка
Как и любые приложения, AWESOME WM устанавливается из репозитория Ubuntu.
1 |
sudo apt-get install awesome awesome-extra |
После установки при авторизации пользователя потребуется выбрать оконный менеджер Awesome. По управлению он схож с i3, который мы рассматривали. Тут также используется клавиша «mod», только в документации она записана как «mod4».
Вызов терминала | mod4+Enter |
Вызов меню | mod4+w |
Запуск приложения | mod4+r |
Перезапуск Awesome | mod4+Control+r |
Выход Awesome | mod4+Shift+q |
Более подробно про сочетания клавиш можно узнать из документации, достаточно в терминале ввести:
1 |
man awesome |
Или посетив раздел документации на официальном сайте.
Awesome использует стандартные файлы конфигов, поэтому перед любым изменение конфигурации рекомендуем сохранять копию файла до изменений. Так же перед заменой и изменением конфигураций лучше делать проверку.
1 |
awesome -k ~/.config/awesome/rc.lua |
Так как конфигурационный файл написан на языке Lua, а вы не хотите его изучать то можно в любом месте конфигурационного файла указывать выполнение своих скриптов, написанных на любом доступном вам языке, пример ниже взят с сайта ubuntu.ru
1 2 3 4 5 6 |
-- Create a textclock widget mytextclock = awful.widget.textclock({ align = "right" }) mytextclock:buttons(awful.util.table.join( awful.button({ }, 1, function () awful.util.spawn_with_shell("/home/<имя_пользователя>/bin/dairy.sh") end) )) |
Данный код при нажатии на виджет часов будет вызывать скрипт
/home/<имя_пользователя>/bin/dairy.sh.
Если при запуске голого Awesome перестает работать переключение раскладок клавиатуры, то для ее активации и настройки потребуется добавить команду в автозапуск.
1 |
setxkbmap -layout 'us,ru' -variant ',winkeys,winkeys' -option grp:caps_toggle -option grp_led:caps -option terminate:ctrl_alt_bksp |
Особенность тайлинговых рабочих столов, в том числе и Awesome, это система тегов, использующаяся вместо привычных рабочих столов. Система тегов обладает большей гибкостью и конфигурируемостью.
В повседневном использовании Awesome, придется работать со схемами и тегами. Приведем пример куска кода rc.lua, отвечающего за теги и схему расположения клиентов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
layouts = { awful.layout.suit.floating, awful.layout.suit.tile, awful.layout.suit.tile.left, awful.layout.suit.tile.bottom, awful.layout.suit.tile.top, awful.layout.suit.fair, awful.layout.suit.fair.horizontal, awful.layout.suit.spiral, awful.layout.suit.spiral.dwindle, awful.layout.suit.max, awful.layout.suit.max.fullscreen, awful.layout.suit.magnifier } |
Кусок кода отвечающий за формирование списка тегов и отображение их на экране:
1 2 3 4 5 6 7 8 |
-- {{{ Tags -- Define a tag table which hold all screen tags. tags = {} for s = 1, screen.count() do -- Each screen has its own tag table. tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1]) end -- }}} |
Данный код формируется для каждого экрана. Для настройки тегов введем дополнительную таблицу tags.
1 2 3 4 5 6 7 8 9 10 11 |
-- {{{ Tags -- Define a tag table which hold all screen tags. tags = { names = {"⠐", "⠡", "⠪", "⠵", "⠻", "⠿",}, layout = {layouts[2], layouts[2], layouts[4], layouts[2], layouts[4], layouts[2]} } for s = 1, screen.count() do -- Each screen has its own tag table. tags[s] = awful.tag(tags.names, s, tags.layout) end -- }}} |
Так же вместо символов в именах тэгов можно использовать любые иконки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
-- {{{ Tags -- Define a tag table which hold all screen tags. tags = { names = {"","","","","",""}, layout = {layouts[2], layouts[2], layouts[4], layouts[2], layouts[4], layouts[2]} } for s = 1, screen.count() do -- Each screen has its own tag table. tags[s] = awful.tag(tags.names, s, tags.layout) awful.tag.seticon(beautiful.homeicon, tags[s][1]) awful.tag.seticon(beautiful.wwwicon, tags[s][2]) awful.tag.seticon(beautiful.officeicon, tags[s][3]) awful.tag.seticon(beautiful.chaticon, tags[s][4]) awful.tag.seticon(beautiful.wineicon, tags[s][5]) awful.tag.seticon(beautiful.mediaicon, tags[s][6]) end -- }}} |
Еще одной особенностью Awesome являются виджеты. Более подробную документацию, по настройкам Awesome можно найти в официальной документации