以编程方式更改 Awesomewm 主题

sam*_*lmr 6 awesome-wm

我有几个壁纸和每个壁纸的主题/调色板,我正在尝试找到一种方法来分配键盘快捷键以将主题从一个主题更改为另一个主题。

我在设置每个单独的主题时没有问题,但我一生都无法找到一种方法来设置主题,一旦awesomewm开始运行,而不杀死当前实例,然后创建一个新实例。

我认为一旦主题被分配并且 Awesomewm 被实例化,值就被固定了,如果是这样的话我认为这是不可能的。

小智 2

我认为可能的方法之一是在主题更改后重新创建所有小部件。不确定整个代码,但这里是如何通过热键重建面板以获得 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)
Run Code Online (Sandbox Code Playgroud)

并将操作添加到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"}
),
Run Code Online (Sandbox Code Playgroud)