You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AwesomeWM配置:让新客户端固定在启动时的聚焦标签打开

解决AwesomeWM中始终在启动时的标签打开新客户端的问题

要实现新客户端始终在发起启动操作时的标签打开(包括多窗口程序的后续窗口),可以通过以下步骤修改AwesomeWM的配置文件(通常是~/.config/awesome/rc.lua):

1. 定义全局变量记录启动信息

在配置文件开头添加全局变量,用来存储启动程序时的目标标签和程序类名:

local launch_info = { tag = nil, class = nil }

2. 重写默认启动函数,记录启动上下文

替换默认的awful.spawn函数,在启动程序时记录当前聚焦的标签和程序名称(用于匹配多窗口):

local original_spawn = awful.spawn
awful.spawn = function(cmd, args, callback)
    -- 记录当前聚焦的标签
    launch_info.tag = awful.screen.focused().selected_tag
    -- 从命令中提取程序名称(处理带路径或参数的命令)
    local cmd_name = cmd:match("^(%S+)")
    if cmd_name then
        launch_info.class = cmd_name:match("[^/]+$"):lower()
    end
    -- 设置5秒定时器,自动清空记录(适配多窗口程序加载延迟)
    gears.timer.start_new(5, function()
        launch_info.tag = nil
        launch_info.class = nil
    end)
    -- 调用原始启动函数
    return original_spawn(cmd, args, callback)
end

3. 绑定客户端创建信号,指定窗口标签

添加客户端manage信号的处理逻辑,将新创建的窗口移到启动时记录的标签:

client.connect_signal("manage", function(c)
    -- 如果存在有效启动标签,且窗口类名匹配
    if launch_info.tag and launch_info.class and c.class:lower() == launch_info.class:lower() then
        -- 将窗口移到目标标签
        c:move_to_tag(launch_info.tag)
        -- 如果是程序的主窗口(普通窗口类型),提前清空记录
        if c.type == "normal" then
            launch_info.tag = nil
            launch_info.class = nil
        end
    end
end)

4. 适配特殊程序(可选)

如果某些程序的类名和命令名不一致(比如google-chrome-stable的类名是Google-chrome),可以单独为这些程序写自定义启动函数:

local function spawn_chrome()
    launch_info.tag = awful.screen.focused().selected_tag
    launch_info.class = "google-chrome"
    awful.spawn("google-chrome-stable")
    gears.timer.start_new(5, function()
        launch_info.tag = nil
        launch_info.class = nil
    end)
end
-- 然后将快捷键绑定到这个函数,比如:
awful.key({ modkey }, "c", spawn_chrome, { description = "打开Chrome", group = "launcher" })

注意事项

  • 定时器的5秒可以根据程序加载速度调整(比如Discord这类加载慢的程序可以设为10秒)。
  • 如果不需要区分程序类名,可以简化逻辑:去掉class相关判断,只要launch_info.tag存在就将窗口移过去,这样所有启动后N秒内打开的窗口都会到目标标签。
  • 修改配置后,按Mod+Ctrl+r重启AwesomeWM即可生效。

内容的提问来源于stack exchange,提问作者mario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:43:00