Установка и настройка awesome wm —
Оконных менеджеров сейчас достаточно большое разнообразие. Решил попробовать оконный менеджер awesome. Основные поставленные задачи — это удобство и минималистичность. Так как для установки был выбран netbook и экран на нем небольшой необходимо хорошо продумать, где что разместить для более удобного просмотра информации.
Установка будет производиться на чисто установленный дистрибутив без DE в данном случае это Debian 7 Wheezy. Производя установку и настройку столкнулся с некоторыми проблемами и нюансами, которые опишу в данной статье.
Дистрибутив уже установлен, поэтому приступим к установке и непосредственно настройке WM.
Далее необходимо поставить дисплейный менеджер. Их выбор немал, но я остановился все таки на LightDM.
Файл настроек менеджера расположен стандартно:
После логина в систему попадаем на стандартный вид awesome wm, который с настройками по дефолту выглядит весьма печально:
Начнем его пилить по своему вкусу.
Для начала необходимо скопировать все необходимые файлы для работы в домашний каталог, предварительно создав каталог для файлов awesome:
переходим в созданный каталог и копируем стандартный файл конфигурации awesome:
Далее копируем каталог с темами:
и библиотеки виджетов:
Все изменения мы будем проводить с файлами скопированными в домашний каталог. Если будет допущена ошибка в конфигурационном файле — awesome будет использовать стандартный свой файл конфигурации полностью или частично в зависимости от ситуации.
Файл конфигурации написан на языке Lua.
awesome -k ~/.config/awesome/rc.lua
Открываем для редактирования файл rc.lua и начинаем вносить наши изменения:
Пропишем сразу использование библиотеки для виджетов:
Изменим путь к файлу конфигурации используемой темы:
beautiful.init("/home/user/.config/awesome/themes/default/theme.lua")
Изменим используемые приложения:
browser = "firefox"
editor = os.getenv("vim") or "vim"
editor_cmd = terminal .. " -e " .. editor
Пропишем автозапуск приложений, которые будут стартовать при запуске/перезапуске awesome. Можно просто прописать(к примеру для запуска network manager applet):
но при перезапуске awesome — будет появляться копия nm-applet. Для избежания этого мы сделаем иначе: сперва будет проверяться запущено ли приложение, и если да — то оно его не будет запускать повторно:
os.execute("pgrep -u $USER -x nm-applet || (nm-applet &)")
os.execute("pgrep -u $USER -x kbdd || (kbdd &)")
os.execute("pgrep -u $USER -x xscreensaver || (xscreensaver -nosplash &)")
Далее изменим теги. По умолчанию их девять и они имеют цифровое обозначение. Тут дело выбора можно оставить как есть, но мне это не понравилось и более удобно сделать сокращения для них, да и поменьше количество, сгруппировав теги:
-- Define a tag table which hold all screen tags.
tags = {
names = { "main", "www", "im", "media", "other" },
layout = { layouts[2], layouts[1], layouts[2], layouts[2], 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
-- }}}
Теперь можно заняться виджетами. В сети их достаточно много, и можно выбрать тот который придется по вкусу, подпилив то что не понравиться.
Так как интерфейс и функционал затачивается под netbook, необходим определенный набор виджетов.
Виджет для разделения отображаемой информации:
separator = widget({type = "textbox"})
separator.text = "::"
Виджет для отображения загрузки процессора:
cpuicon.image = image(beautiful.widget_cpu)
cpuwidget = widget({type = "textbox"})
vicious.register(cpuwidget, vicious.widgets.cpu, "Cpu: $2%|$3%")
где: $2 и $3 — загрузка каждого ядра процессора. Если необходима общая загрузка — тогда необходимо использовать параметр $1.
Виджет отображения температуры процессора:
therm_cpuicon.image = image(beautiful.widget_therm_cpu)
cputhermalwidget = widget({type = "textbox"})
vicious.register(cputhermalwidget, vicious.widgets.thermal, "CPU: $1 °C", 20, {"coretemp.0", "core"})
Виджет отображения температуры жесткого диска:
therm_hddicon.image = image(beautiful.widget_therm_hdd)
hddtempwidget = widget({ type = "textbox" })
vicious.register(hddtempwidget, vicious.widgets.hddtemp, "HDD: ${/dev/sda} °C", 19)
Для этого виджета необходима утилита hddtemp. Температура считывается путем посылки запроса на TCP-сервис висящий по умолчанию на 7634 порту. Данный вариант наиболее безопасен так как не требует запуска утилиты с правами root.
Виджет отображения загрузки ОЗУ:
memicon.image = image(beautiful.widget_mem)
memwidget = widget({type = "textbox"})
vicious.register(memwidget, vicious.widgets.mem, "Ram: $2Mb", 13)
Виджет отображения статуса аккумулятора:
baticon.image = image(beautiful.widget_bat)
batwidget = widget({type = "textbox"})
function battery_status_text(widget, args)
local batstat = args[2]
if batstat < 15 then
return 'Bat: ' .. '<span>' .. batstat .. '%'
elseif batstat < 50 then
return 'Bat: ' .. '<span>' .. batstat .. '%'
end
return 'Bat: ' .. '<span>' .. batstat .. '%</span>'
end
vicious.register(batwidget, vicious.widgets.bat, battery_status_text, 120, "BAT1")
В зависимости от уровня заряда — меняется цвет отображения шрифта. Также необходимо изменить идентификатор аккумулятора на свой.
Виджет отображения звука:
volicon.image = image(beautiful.widget_vol)
volumewidget = widget({ type = "textbox" })
vicious.register(volumewidget, vicious.widgets.volume,
function(widget, args)
local label = { ["♫"] = "O", ["♩"] = "M" }
return " " .. args[1] .. "% State: " .. label[args[2]]
end, 2, "PCM")
Если необходимо изменить канал который будет регулироваться — то нужно вместо «PCM» указать требуемый канал, глянуть который можно в alsamixer.
Виджет раскладки клавиатуры:
kbdwidget.border_color = beautiful.fg_normal
kbdwidget.text = "En"
dbus.request_name("session", "ru.gentoo.kbdd")
dbus.add_match("session", "interface='ru.gentoo.kbdd',member='layoutChanged'")
dbus.add_signal("ru.gentoo.kbdd", function(...)
local data = {...}
local layout = data[2]
lts = {[0] = "En", [1] = "Ru"}
kbdwidget.text = " "..lts[layout].." "
end
)
Для этого виджета требуется программа kbdd.
Виджет часов:
Так как по умолчанию виджет часов на английском — его необходимо локализировать. Для этого отредактируем файл конфигурации виджета:
в нем ищем строку os.setlocale и меняем ее содержимое на:
Для придания более законченного вида, красоты и удобства можно добавить отображения календаря, который будет отображаться при наведении указателя мыши на виджет часов(исходный код виджета и измененный который мне более понравился).
Выбираем что больше понравиться. Содержимое сохраняем в файл к примеру с именем «calendar2.lua». Этот файл необходимо скопировать в каталог awesome(~/.config/awesome/) и для подключения его нужно:
добавить в начало конфига rc.lua:
и добавить после строки инициализации виджета часов:
В начале описания виджета можно увидеть две строки с похожим содержимым:
memicon.image = image(beautiful.widget_mem)
эти строки необходимы для отображения иконок виджета. Содержимое меняется для каждого виджета отдельно. Но просто добавить текст к каждому виджету недостаточно, нужны еще и сами иконки.
Я использовал найденные в сети иконки и немного некоторые отредактировал по своему вкусу. Размер иконок взят 24×24.
Когда иконки подготовлены необходимо их поместить в каталог c темой:
Расположение каталога можно выбрать и другое, но мне не нравиться когда с файлами беспорядок.
После этих манипуляций необходимо в файле конфигурации темы прописать эти иконки:
строка описания имеет вид:
каждый файл иконок необходимо прописать по аналогии. Но и это еще не все: что бы они появились на панели — необходимо их добавить в раздел wibox второй панели(или первой если решено было использовать только одну панель) и по аналогии добавить для остальных:
volicon,
Для удобной работы и просмотра статуса виджетов решено было использовать дополнительную панель. На одной панели останутся стандартные виджеты: часы с календарем, раскладка клавиатуры, меню awesome, теги и запускаемые приложения, а на втором все остальные виджеты.
В файле конфигурации rc.lua ищем раздел стандартного wibox и после него добавляем новый:
for s = 1, screen.count() do
-- Create the Wibox
statwibox[s] = awful.wibox({ position = "bottom", screen = s })
-- Add widgets to the wibox - order matters
statwibox[s].widgets = {
{
cpuicon,
cpuwidget,
separator,
memicon,
memwidget,
separator,
therm_cpuicon,
cputhermalwidget,
separator,
therm_hddicon,
hddtempwidget,
layout = awful.widget.layout.horizontal.leftright
},
volumewidget,
volicon,
separator,
batwidget,
baticon,
layout = awful.widget.layout.horizontal.rightleft
}
end
Теперь настроим горячие клавиши. Ищем в файле конфига раздел Key bindings, где и добавляем те комбинации которые нам нужны. В моем случае добавлены сочетания для блокирования экрана, вызова файлового менеджера регулирования громкости:
awful.key({ modkey, }, "e", function () awful.util.spawn("rox-filer") end),
-- Volume key
awful.key({}, "#122", function () awful.util.spawn("amixer set PCM 5%-") end),
awful.key({}, "#123", function () awful.util.spawn("amixer set PCM 5%+") end),
Для того чтобы узнать сканкоды клавиш можно воспользоваться программой xbindkeys:
нажимаем комбинацию клавиш и получаем результат.
Так как теги я для удобства я выделил по категориям, то будет удобно привязать запуск определенных программ в свое теге. Ищем раздел Rules и добавляем наши правила:
properties = { tag = tags[1][2] } },
запускаемая программа Firefox будет отображаться на втором теге с именем «www». По аналогии добавляем свои приложения по желанию.
Для включения плавающего режима для определенного приложения необходимо добавить на каждое приложение запись вида:
указав необходимое имя приложения.
Для того чтобы узнать как правильно записать имя приложения для правил необходимо воспользоваться программой xprop:
далее необходимо щелкнуть по окну требуемой программы и нам будет выведено имя приложения вида:
нам необходим второй параметр «Nm-applet».
Теперь перейдем к настройке меню awesome. Для редактирования главного меню ищем в конфиге строку «mymainmenu» и начинаем править под свои потребности. Мне удобно чтобы были видны те приложения которые чаще всего используются:
{ "Debian", debian.menu.Debian_menu.Debian },
{ "open terminal", terminal },
{ "Firefox", "firefox" },
{ "Pidgin", "pidgin" },
{ "XChat", "xchat" },
{ "Skype", "skype" },
{ "Audacious", "audacious" }
}
})
Синтаксис в принципе прост: с лева указываются названия отображаемые в списке, а с права — команда для запуска.
Так как у нас по сути чистая WM, необходимо поставить программы. Выбора много и я остановился на следующих:
ROX-Filer - файловый менеджер
Mirage - программа просмотра изображений
Evince - программа просмотра документов(pdf, djvu и др.)
LeafPad - текстовый редактор GTK+
Xarchiver - интерфейс к различным архиваторам командной строки
Firefox - Веб-браузер
Lynx - консольный текстовый браузер
Pidgin - модульный клиент мгновенного обмена сообщениями
XChat - клиент IRC
Scrot - утилита командной строки для захвата изображения экрана
XScreenSaver - модульная экранная заставка и блокировщик экрана для X11
LilyTerm - эмулятор терминала.
На этом по сути настройка awesome закончена, Что то может понравится в созданной настройке, а что то нет — можно экспериментировать и затачивать то или иное как будет удобно.
Скачать архив конфигурации: awesome
© 2013 — 2015, XELFAER. Все права защищены.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.