我已经使用规则为客户端自动分配标签,但有时我需要在特定标签中生成客户端。
例如,我通常希望我的浏览器(dwb)在标签 2 中使用以下规则:
awful.rules.rules = {
[...]
{ rule = { class = "Dwb" }, properties = { tag = tags[1][2] } },
}
但是,当为调试会话生成浏览器时,我希望它在另一个标签中生成(与我的 IDE 一起),比如说标签 3。
如何从命令行启动一个程序,以便它的客户端在指定为参数的标签中生成?
答案1
您可以创建一个函数并通过出色的客户端工具使用它。
首先,创建一个函数并将其添加到您的 rc.lua 文件中:
function spawn(command, class, tag, test)
local test = test or "class"
local callback
callback = function(c)
if test == "class" then
if c.class == class then
awful.client.movetotag(tag, c)
client.disconnect_signal("manage", callback)
end
elseif test == "instance" then
if c.instance == class then
awful.client.movetotag(tag, c)
client.disconnect_signal("manage", callback)
end
elseif test == "name" then
if string.match(c.name, class) then
awful.client.movetotag(tag, c)
client.disconnect_signal("manage", callback)
end
end
end
client.connect_signal("manage", callback)
awful.util.spawn_with_shell(command)
end
然后,重新启动您的 awesome 会话(通常通过 Ctrl+Super+r)。
然后,就像编写规则一样,选择识别要移动的客户端(窗口)的方式。您可以按类、按实例或按名称进行操作。用于xprop
获取有关窗口的信息,另请参阅此常问问题。
最后,创建一个简单的 bash 脚本:
#!/usr/bin/env bash
cat <<EOF | awesome-client
spawn("/usr/bin/firefox", "Firefox", tags[1][1], "class")
EOF
您可以添加任意数量的生成操作。我编写了多个启动脚本,可以根据我打算执行的任务启动我需要的所有程序。
希望这可以帮助。