debugging - 如何更改 AwesomeWM 标签名称?

标签 debugging lua syntax-error awesome-wm

我正在尝试自定义我的 Awesome Window Manager,以将标签编号更改为罗马数字(将 1 更改为 I,将 2 更改为 II...)。为了实现这一目标,我正在修改/etc/xdg/awesome/rc.lua 文件,特别是 {{tags}} 部分。

我找到了this blog post ,他可以随意编辑标签名称,看看左上角:

detail of the tag modification

我还阅读了rc.lua file附加到主题,并意识到我想要做的事情所使用的技术是结合一些表格的 for 循环。

这是文件中感兴趣的代码片段:

-- {{{ Tags
-- Define a tag table which hold all screen tags.
tags = {}
tagnames = { "irc",  "mpd", "net", "usr", "png", "msg", }
taglayouts = {
        awful.layout.suit.tile.top,
        awful.layout.suit.tile.bottom,
        awful.layout.suit.floating,
        awful.layout.suit.fair,
        awful.layout.suit.floating,
        awful.layout.suit.floating }

for s = 1, screen.count() do
    -- Each screen has its own tag table.
    tags[s] = {}
    for tagnumber = 1, 6 do
        -- Add tags and name them.
        tags[s][tagnumber] = tag(tagnames[tagnumber])
        -- Add tags to screen one by one, giving them their layouts at the same time.
        tags[s][tagnumber].screen = s
        awful.layout.set(taglayouts[tagnumber], tags[s][tagnumber])
    end
    -- I'm sure you want to see at least one tag.
    tags[s][1].selected = true
end
-- }}}

...这是我的 rc.lua 文件:

-- {{{ Tags
-- Define a tag table which hold all screen tags.
tags = {}
tagnames = { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", }
taglayouts = {
        awful.layout.suit.tile.top,
        awful.layout.suit.tile.bottom,
        awful.layout.suit.floating,
        awful.layout.suit.fair,
        awful.layout.suit.floating,
        awful.layout.suit.floating }

 for s = 1, screen.count() do
    -- Each screen has its own tag table.
    -- tags[s] = awful.tag({  "1", "2", "3", "4", "5", "6", "7", "8",$

      tags[s] = {}

      for tagnumber = 1, 9 do
                tags[s][tagnumber] = tag(tagnames[tagnumber])
                tags[s][tagnumber].screen = s
                awful.layout.set(taglayouts[tagnumber], tags[s][tagnumber])
      end

      tags[s][1].selected = true
 end
--- }}}

正如您所看到的,它们非常相似,不同之处在于我有九个标签而不是六个(我根据它更改了代码)。当我尝试使用 Xephyr 调试设置时,控制台中出现错误,并且我只能看到我的壁纸:

    error while running function
stack traceback:
    [C]: in global 'tag'
    /etc/xdg/awesome/rc.lua:100: in main chunk
error: /etc/xdg/awesome/rc.lua:100: bad argument #2 to 'tag' (table expected, got string)
error while running function
stack traceback:
    [C]: in global 'tag'
    /etc/xdg/awesome/rc.lua:100: in main chunk
error: /etc/xdg/awesome/rc.lua:100: bad argument #2 to 'tag' (table expected, got string)
E: awesome: main:605: couldn't find any rc file

我看不到错误在哪里,因为我无法在错误行中检测到任何语言违规tags[s][tagnumber] = tag(tagnames[tagnumber]):它只是用我的自定义名称填充标签数组,告诉它将它们视为标签而不是随机字符串。

更新:我刚刚意识到taglayouts中有六种布局,与原始Lua文件中的标签数量相同。我想我应该有九个标签布局,但我不知道应该添加哪一个。另外,我不认为这是代码正确编译的关键障碍,因为错误行与布局列表没有任何关系。

更新2:taglayouts添加了另外三个awful.layout.suit.floating。同样的错误。

最佳答案

根据另一个答案,我将我的 {Tags} 部分替换为:

-- {{{ Tags
-- Define a tag table which hold all screen tags.

tagnum = { "I", "II", "III", "IV", "V", "VI", "VII",
"VIII", "IX" }

for i = 1, 9 do
awful.tag.add((tagnum[i]), {
        layout = awful.layout.suit.tile,
        master_fill_policy = "master_width_factor",
        gap_single_client = true,
        gap = 15,
        screen = s,
})

end

-- }}}

这会创建 i 个标签,它们的名称在 tagnum 表中定义。仅当您想创建相同的标签时这才有用,但它总是比必须键入 i 定义要干净得多。

更好、更清洁的方式:

最初的解决方案很有用,但有一个问题:启动 AwesomeWM 时,您不会出现在定义的标签中,而是同时出现在所有标签中。也就是说,如果您打开一个终端,您将在您拥有的每个标签中打开它,除非您之前选择了带有 Mod4+TagNum 的终端(遵循默认配置)。

为了解决这个问题,我将默认配置文件与修改后的配置文件进行了比较,我意识到默认配置文件一切正常。于是我开始修改代码以寻找解决方案。总而言之,我发现只需对默认代码进行最少的修改,您就可以随意自定义标签名称。我就是这样做的:

-- {{{ Tags
tags = {}
-- Generates tags with custom names
for s = 1, screen.count() do
        tags[s] = awful.tag({ "I", "II", "III", "IV", "V", "VI", "VII", "IX" }),
end
-- }}}

附注我保留旧的解决方案,以防有人希望将该代码用于其他目的。

关于debugging - 如何更改 AwesomeWM 标签名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41239823/

相关文章:

javascript - 有人使用 yui logger 来跟踪 yui 事件吗?有没有办法过滤它?

function - 获取Lua脚本中的所有函数

lua - Love2D 背景图像从其他对象中获取颜色

java - spring mvc项目.jsp文件中出现 "invalid character used in text string"错误

javascript - 在 Chrome 控制台中加载外部库

PHPUnit 在 xdebug 处于事件状态并正在监听的情况下运行时卡住

visual-studio-2010 - 如何在 Visual Studio 2010 中启用自动窗口

compiler-construction - 静态类型的 Lua

batch-file - 批处理+ VBS错误预期语句结束

PHP 解析/语法错误;以及如何解决它们