Изменить тему awesomewm программно
У меня есть несколько обоев и тема / цветовая палитра для каждого, я пытаюсь найти способ назначить сочетание клавиш для изменения темы с одной на другую.
У меня нет проблем с настройкой каждой отдельной темы, но я не могу найти способ установить тему, как только awesomewm запустится, не убивая текущий экземпляр и затем создавая новый.
Я думаю, что как только тема была назначена, а awesomewm был создан, значения будут зафиксированы, если это не так, я не думаю, что это будет возможно сделать.
1 ответ
Я думаю, что один из возможных способов - это воссоздать все ваши виджеты после смены темы. Не уверен для всего кода, но вот быстрый пример, как восстановить панель с помощью горячей клавиши для awesome v4.0.
Сначала внесем некоторые изменения в функции построения экрана
local function build_panel(s)
-- destroy old panel
if s.mywibox then s.mywibox:remove() end
-- create a promptbox for given screen
s.mypromptbox = awful.widget.prompt()
-- create a layoutbox for given screen
s.mylayoutbox = awful.widget.layoutbox(s)
s.mylayoutbox:buttons(awful.util.table.join(
awful.button({ }, 1, function () awful.layout.inc( 1) end),
awful.button({ }, 3, function () awful.layout.inc(-1) end),
awful.button({ }, 4, function () awful.layout.inc( 1) end),
awful.button({ }, 5, function () awful.layout.inc(-1) end))
)
-- create a taglist widget
s.mytaglist = awful.widget.taglist(s, awful.widget.taglist.filter.all, taglist_buttons)
-- create a tasklist widget
s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, tasklist_buttons)
-- create panel wibox
s.mywibox = awful.wibar({ position = "top", screen = s })
-- add widgets to the panel wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
{ layout = wibox.layout.fixed.horizontal, mylauncher, s.mytaglist, s.mypromptbox },
s.mytasklist,
{ layout = wibox.layout.fixed.horizontal, mykeyboardlayout, wibox.widget.systray(), mytextclock, s.mylayoutbox },
}
end
awful.screen.connect_for_each_screen(function(s)
-- wallpaper
set_wallpaper(s)
-- tags
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
-- panel setup
build_panel(s)
end)
И добавить действие к globalkeys
awful.key(
{ modkey }, "z",
function()
-- change theme settings
beautiful.bg_normal = "#ff2020"
beautiful.fg_normal = "#2020ff"
-- rebuild panel widgets
build_panel(mouse.screen)
end,
{description="theme colors change", group="awesome"}
),
Я хотел того же и добился этого, написав небольшой скрипт, привязанный к ярлыку. Если вы хотите сделать это самостоятельно, выполните следующие действия:
- Создайте папку, содержащую ваши темы.
- Напишите сценарий (или используйте мой), который копирует файлы на ваш
~/.config/awesome
папка. - Добавьте ярлык или что-то в этом роде для выполнения скрипта. Скрипт должен скопировать файлы из вашей папки темы в папку конфигурации awesome (
~/.config/awesome
). - После этого вы можете увидеть / использовать свою тему после выполнения скрипта и перезапуска.
awesomewm
(Ярлык по умолчанию:modkey + shift + r
Вашrc.lua
file должен читать только файлы вашего каталога awesome-config. Вы просто "перезаписываете" их, копируя файлы из своей папки темы. Я надеюсь, что объяснение в порядке, если не просто прокомментировать этот ответ.