如何在 Awesome 中的特定标签中手动生成客户端?

如何在 Awesome 中的特定标签中手动生成客户端?

我已经使用规则为客户端自动分配标签,但有时我需要在特定标签中生成客户端。

例如,我通常希望我的浏览器(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

您可以添加任意数量的生成操作。我编写了多个启动脚本,可以根据我打算执行的任务启动我需要的所有程序。

希望这可以帮助。

相关内容