Beautiful/ru

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

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

Beautiful доступна только для 3 версии awesome.

Установка Beautiful
Во первых, нужно добавить: beautiful = require('beautiful') для подключения библиотеки в вашем файле конфигурации.

Затем, нужно изициализировать использование библиотеки Beautiful с нужной темой: beautiful.init("path_to_theme_file") Тема по умолчанию расположена в /usr/local/share/awesome/themes/default/theme.lua или /usr/share/awesome/themes/default/theme.lua, в зависимости от вашего дистрибутива.

Файл темы существенно отличается от других файлов Lua которые используют таблицу соотвествия пар ключ-значение (такие как 'bg_normal' = '#222222').

Awful может работать с Beautiful позволяя вам избежать добавления лишнего кода и аргументов в функции awful.

Итак, приступим. В принципе, вы можете заменить все определения цветовых переменных по следующему примеру: bg_focus = beautiful.bg_focus Вы можете получить доступ ко всем ключам в паре (keys=value) зарегистрированных в теме как beautiful.&lt;key&gt;

Для того, чтобы создать свою собственную тему, наберите в терминале: cp -r /usr/local/share/awesome/themes ~/.config/awesome/ или cp -r /usr/share/awesome/themes ~/.config/awesome/ Не забудьте изменить путь к файлу темы в вашем rc.lua: beautiful.init(awful.util.getdir("config") .. "/themes/default/theme.lua")

Custom variables
Вы никогда не должны изменять названия переменных по умолчанию (font, bg_normal и прочее) так как они испльзуются в awful, и это приведет к ошибкам в вашем файле конфигурации. Но вы можете добавить любые другие переменные по вашему желанию.

Например, если вы хотите, вы можете добавить тему для вашего виджета: fg_off_widget = #ffffff fg_widget = #000000 fg_end_widget = #ff0000

Далее в файле rc.lua: my_widget:bar_properties_set("data_name", {  border_color = beautiful.border_normal,   fg_off = beautiful.fg_off_widget,   fg = beautiful.fg_widget,   fg_end = beautiful.fg_end_widget }) В этом примере мы смешали и переменную темы по умолчанию (beautiful.border_normal) и заданную нами переменную (beautiful.*_widget). Также вы можете назначать свои собственные иконки и прочее. Но помните, что если вы начали использовать определенную вами переменную в вашем файле rc.lua, вам необходимо определить эту переменную в каждом файле ВСЕХ тем, иначе при выборе другой темы будет множество ошибок.

Установка обой
Beautiful может устанавливать обои, поэтому вам нет необходимости изменять .xinitrc или .xsession. Это позволяет устанавливать обои для каждой темы отдельно. Если вы посмотрите файл темы по умолчанию(default), вы увидите ключ wallpaper_cmd, этот ключ установит обои при выполнении команды beautiful.init("path_to_theme_file"). Вы можете удалить/закоментировать этот ключ, если не хотите, чтобы Beautiful производил обработку этой команды.

Например, если вы используете fbsetbg для установки обой, вы можете записать следующее: wallpaper_cmd = fbsetbg -f .config/awesome/themes/awesome-wallpaper.png

Если у вас несколько мониторов(screen), и вы хотите иметь различные обои на них, используйте следующий код: wallpaper_cmd = { "fbsetbg -f .config/awesome/themes/awesome-wallpaper1.png", "fbsetbg -f .config/awesome/themes/awesome-wallpaper2.png" }

Использование symlinks
Ранее было сказано, что использование Beautiful позволяет избежать редактирования файлаrc.lua когда вы хотите изменить оформление, на самом деле это не совсем верно, так как при изменении темы, вам необходимо изменить путь к ней в функции beautiful.init. Но, вы можете использовать символическую ссылку на вашу текущую тему, и использовать ее для инициализации Beautiful, таким образом, вам понадобится только изменить ссылку на другую тему, а затем презапустить awesome (ctrl+mod4+r по умолчанию) для изменения темы.

Теперь вы можете написать функцию и добавить ее в меню awful.menu для мгновенного изменения вашей темы, мы предполагаем, что путь к теме у вас такой же: beautiful.init(awful.util.getdir("config") .. "/current_theme/theme.lua")

Затем пишем: mythememenu = {}

function theme_load(theme) local cfg_path = awful.util.getdir("config")

-- Создание символической ссылки на выбраную тему в /home/user/.config/awesome/current_theme awful.util.spawn("ln -sfn " .. cfg_path .. "/themes/" .. theme .. " " .. cfg_path .. "/current_theme") awesome.restart end

function theme_menu -- Прочитать все файлы тем и добавить их в таблицу меню local cmd = "ls -1 " .. awful.util.getdir("config") .. "/themes/" local f = io.popen(cmd)

for l in f:lines do	 local item = { l, function  theme_load(l) end } table.insert(mythememenu, item) end

f:close end

-- Создаем таблицу меню при запуске или перезапуске theme_menu

-- Модификация меню awesome для добавления подменю с темами myawesomemenu = { { "manual", terminal .. " -e man awesome" }, { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" }, { "themes", mythememenu }, { "restart", awesome.restart }, { "quit", awesome.quit } }

Делитесь своими темами
Не стесняйтесь делитесь вашими темами с сообществом awesome!