【问题标题】:Change awesomewm theme programmatically以编程方式更改 awesomewm 主题
【发布时间】:2020-08-10 04:57:30
【问题描述】:

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

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

我认为一旦分配了主题并实例化了 awesomewm,值就固定了,如果是这种情况,我认为不可能这样做。

【问题讨论】:

    标签: awesome-wm


    【解决方案1】:

    我认为一种可能的方法是在主题更改后重新创建所有小部件。不确定整个代码,但这里是如何通过热键为真棒 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"}
    ),
    

    【讨论】:

      【解决方案2】:

      我想要同样的,并通过编写一个映射到快捷方式的小script 来实现。如果您想自己做,可以按照以下步骤操作:

      1. 创建一个包含您的主题的文件夹。
      2. 编写一个脚本(或使用mine)将文件复制到您的~/.config/awesome 文件夹。
      3. 添加一个快捷方式或类似的东西来执行脚本。 该脚本应将主题文件夹中的文件复制到 awesome (~/.config/awesome) 的配置文件夹。
      4. 执行脚本并重启awesomewm(默认快捷方式:modkey + shift + r
        你的rc.lua 文件应该只读取你的 awesome-config-directory 的文件。您只是通过复制主题文件夹的文件来“覆盖”它们。如果不只是评论这个答案,我希望解释很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-18
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多