在 awesome-wm 中更改工作区时专注于应用程序

Car*_*ito 5 linux awesome-wm lua

我将 archlinux 与 awesome-wm 结合使用已经有一段时间了。我仍然没有弄清楚如何在通过 Mod+number 更改工作区时自动抓住应用程序的焦点。

例如,我在工作区 2 上运行 Firefox,在工作区 1 上运行一些终端。如果我在工作区 2 中并按 Mod+1 转到工作区 1,则没有终端聚焦。我当然可以点击终端来获取焦点,或者按 Mod+j 或 Mod+k,但我希望这会自动发生。

我怎样才能做到这一点?提前致谢!

Car*_*ito 5

我想通了,所以我会回答我自己的问题。这可能不是最好或最有效的方法,但它可以完成工作。这个问题可能更适合 stackoverflow,因为它更专注于编程。

我编写了这个函数,它将焦点放在屏幕上的第一个客户端上(除了我使用的系统监视器 Conky)。

-- Grab focus on first client on screen
function grab_focus()
    local all_clients = client.get()
    for i, c in pairs(all_clients) do
        if c:isvisible() and c.class ~= "Conky" then
            client.focus = c
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

我现在在 rc.lua 中调用此函数,其中映射了编号键:

-- Bind all key numbers to tags.
...
if tags[screen][i] then
    awful.tag.viewonly(tags[screen][i])
    grab_focus()
end
Run Code Online (Sandbox Code Playgroud)