在 Awesomewm 的两个屏幕上循环浏览客户端

在 Awesomewm 的两个屏幕上循环浏览客户端

我正在使用 Awesomewm 并有两个显示器,并且Mod4+jMod4+k在当前屏幕上的窗口之间循环。有没有办法循环浏览所有屏幕上的所有窗口/客户端,使其像平常一样工作Alt+Tab

答案1

摸索一番后糟糕的模块文档我找到了一个解决方案。它很hacky,但它按照我想要的方式工作。

awful.key({ modkey,           }, "Tab",
    function ()
        awful.client.focus.byidx(1)
        if awful.client.ismarked() then
            awful.screen.focus_relative(-1)
            awful.client.getmarked()
        end
        if client.focus then
            client.focus:raise()
        end
        awful.client.togglemarked()
    end),

此函数在当前屏幕上的客户端之间循环,对它们进行标记,当它们全部被标记时,跳转到下一个屏幕。以下是逐步发生的情况:

这很有趣,因为我不知道“标记”是什么意思。被标记的客户在视觉上或行为上似乎与未标记的客户没有什么不同。

奇怪的是,我必须编写一个 10 行函数才能获得像多屏幕 alt-tab 这样简单的东西。我可能做了一些过分的事情)

答案2

当然如此!

中的键绑定awesome由 rc 文件控制,该文件实际上是一个lua脚本。键绑定就是这样,它们将键绑定到 lua 函数。您可以自由地使用这些功能任何你希望他们这么做。

在您的情况下,您希望将这些键绑定到一个功能,该功能可以更改每个屏幕上的活动标签,而不仅仅是当前的焦点屏幕。

现在您的配置中可能有几行与此类似的行:

awful.key({ modkey }, "j", awful.tag.viewprev )

...它的作用与它看起来的样子差不多。

您要做的是将这些从简单的命令调用更改为令人敬畏的 API,使其成为按顺序运行几个命令的小函数。awful.tag.viewprev()和函数aweful.tag.viewnext()可以方便地采用可选参数来指示要在哪个屏幕上进行操作。默认情况下,它们适用于当前的,但您可以覆盖这一点。

例如,要在屏幕 1 和 2 上运行相同的操作,上面的行可能会更改为:

awful.key({ modkey }, "j", function () awful.tag.viewprev(1); awful.tag.viewprev(2) end)

请记住,您的环境可能会略有不同。请务必注意各种结构(如括号、大括号等)的打开和关闭位置,并以逗号结束属于列表一部分的行。根据需要进行调整以匹配您的配置文件。

相关内容