如何更改 AwesomeWM 标签名称?
How to change AwesomeWM tag names?
我正在尝试自定义我的 Awesome Window 管理器以将标签编号更改为罗马数字(将 1 更改为 I,将 2 更改为 II...)。为了实现这一点,我正在修改我的 /etc/xdg/awesome/rc.lua 文件,特别是 {{tags}} 部分。
我找到了this blog post,里面可以随意编辑标签名,看左上角:
我还阅读了主题附带的 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])
:它只是用我的自定义名称填充标签数组,告诉它处理它们作为标签而不是随机字符串。
更新: 我刚刚意识到标签布局中有六种布局,与原始 Lua 文件中标签的数量相同。我想我应该有九种标签布局,但我不知道应该添加哪一种。另外,我不认为这是代码正确编译的关键障碍,因为错误行与布局列表没有任何关系。
更新 2: 在 taglayouts
中又添加了三个 awful.layout.suit.floating
。同样的错误。
还没有正式的答案,但昨天我写了更多关于这个的文档:
https://github.com/awesomeWM/awesome/pull/1279/files#diff-df495cc7fcbd48cd2698645bca070ff9R39
它适用于 Awesome 4.0,但在这种情况下没有太大变化,因此该示例几乎有效(gap
属性 在 3.4/3.5 中不可用)。
此外,如果您想设置复杂的标签,我建议您使用我的 Tyrannical 模块(Awesome 3.5+)或 Shifty(Awesome 3.2-3.4)。它旨在让这一切变得更容易。
根据另一个答案,我将 {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
table 中定义。这仅在您想创建相同的标签时才有用,但它总是比必须键入 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
-- }}}
P.S。我保留旧的解决方案,以防有人希望将代码用于其他目的。
我正在尝试自定义我的 Awesome Window 管理器以将标签编号更改为罗马数字(将 1 更改为 I,将 2 更改为 II...)。为了实现这一点,我正在修改我的 /etc/xdg/awesome/rc.lua 文件,特别是 {{tags}} 部分。
我找到了this blog post,里面可以随意编辑标签名,看左上角:
我还阅读了主题附带的 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])
:它只是用我的自定义名称填充标签数组,告诉它处理它们作为标签而不是随机字符串。
更新: 我刚刚意识到标签布局中有六种布局,与原始 Lua 文件中标签的数量相同。我想我应该有九种标签布局,但我不知道应该添加哪一种。另外,我不认为这是代码正确编译的关键障碍,因为错误行与布局列表没有任何关系。
更新 2: 在 taglayouts
中又添加了三个 awful.layout.suit.floating
。同样的错误。
还没有正式的答案,但昨天我写了更多关于这个的文档:
https://github.com/awesomeWM/awesome/pull/1279/files#diff-df495cc7fcbd48cd2698645bca070ff9R39
它适用于 Awesome 4.0,但在这种情况下没有太大变化,因此该示例几乎有效(gap
属性 在 3.4/3.5 中不可用)。
此外,如果您想设置复杂的标签,我建议您使用我的 Tyrannical 模块(Awesome 3.5+)或 Shifty(Awesome 3.2-3.4)。它旨在让这一切变得更容易。
根据另一个答案,我将 {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
table 中定义。这仅在您想创建相同的标签时才有用,但它总是比必须键入 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
-- }}}
P.S。我保留旧的解决方案,以防有人希望将代码用于其他目的。