17

我刚刚安装了很棒的 wm。当我使用真棒做 alt+tab 时,它只是切换两个应用程序,不可能激活其他应用程序..任何想法?

4

7 回答 7

22

默认情况下,客户端将焦点设置为上一个具有焦点的窗口。当您 alt+tab 并更改窗口时,前一个窗口现在是原始窗口。因此,它在两个窗口之间循环。

要解决此问题,您需要更改以下内容:

在默认的 rc.lua 中,控制窗口循环的部分如下所示:

    awful.key({ modkey,           }, "Tab",
        function ()
            awful.client.focus.history.previous()
            if client.focus then
                client.focus:raise()
            end
        end),

要循环浏览所有窗口,而不仅仅是前一个,请将上面的代码更改为以下内容:

awful.key({ modkey,           }, "Tab",
    function ()
        -- awful.client.focus.history.previous()
        awful.client.focus.byidx(-1)
        if client.focus then
            client.focus:raise()
        end
    end),

awful.key({ modkey, "Shift"   }, "Tab",
    function ()
        -- awful.client.focus.history.previous()
        awful.client.focus.byidx(1)
        if client.focus then
            client.focus:raise()
        end
    end),

当您按下时,它将在窗口中循环,当您按下时,它会Alt+Tab以相反的顺序循环Alt+Shift+Tab。(开头的两行--是注释,所以不影响结果。)

要循环浏览标签上的每个客户端,甚至是最小化的客户端,您可能会发现此功能很有帮助:

awful.key({ modkey,           }, "Tab",
    function ()
        for c in awful.client.iterate(function (x) return true end) do
            client.focus = c
            client.focus:raise()
        end
    end),

请注意,这些解决方案都不考虑历史,而是切换到最近最少获得焦点的窗口(即,不考虑窗口获得焦点的顺序)。

于 2012-07-29T10:43:55.003 回答
8

I have created a module for this: https://github.com/blueyed/awesome-cyclefocus

It supports different methods of Alt-Tab (see the README) and can be easily configured to your liking via filters that get applied while cycling through the windows, e.g. to filter only windows with the same WM class, or on the same screen/tag.

于 2014-03-02T05:41:47.047 回答
5

我对 Chris 在他的解决方案中提供的设置做了类似的事情。然而,它并没有在所有窗口中转移焦点,而是在主从堆栈中循环它们。换句话说,它们都在屏幕上明显旋转:

awful.key({ modkey, "Shift"   }, "Tab",
    function ()
        awful.client.cycle(false)
        awful.client.focus.byidx(0,awful.client.getmaster()) -- Added 2013-03-01
    end),

awful.key({ modkey,           }, "Tab",
    function ()
        awful.client.cycle(true)
        awful.client.focus.byidx(0,awful.client.getmaster()) -- Added 2013-03-01
    end),

我仍然需要稍微调整一下,因为我希望(至少看起来)在整个循环操作期间保持在主窗口上。当我发现 aweful.client.cycle 变得如此简单时,我仍在熟悉 Awesome Lua API。:)

我想我会加入我目前的解决方案,因为这是我调查的第一个解决我类似问题的资源之一。希望能帮助到你。

于 2013-02-27T06:21:53.140 回答
3

在默认绑定中,Mod + Tab 在最后两个使用的应用程序之间循环。我在寻找 Mod + j 或 Mod + k (相反的顺序)。

于 2012-07-28T10:06:09.393 回答
1

有一个很棒的库,叫做 awesome-switcher-preview。这实现了类似于您在其他操作系统和窗口管理器上所期望的 alt-tab 行为。它按照最近关注的顺序在窗口中循环。它会循环浏览您为屏幕选择的标签集中的所有客户端。它包括最小化的客户端。它试图在做出选择之前不弄乱历史记录。它不会改变堆栈。按住 alt 可保持预览/alt-tab 切换器向上。

你可以在这里得到它: https ://github.com/berlam/awesome-switcher-preview

于 2016-12-09T16:38:25.730 回答
0

我必须说我花了一些时间来设置正确的配置以获得我正在寻找的行为:循环浏览所有窗口,包括(尤其是!)最小化的窗口,在所有标签上,没有提升或聚焦它们并带有预览或通知。

  • 编辑很棒的配置(如上所示):只会循环通过未最小化的窗口。
  • awesome_alttab 已弃用
  • 真棒3.5的真棒切换器
  • 循环焦点:终于!我只是在注释掉第 102 行之后才让它工作,而不是cycle_filters通过 在rc.lua 中用空覆盖

真棒-cyclefocus/init.lua:

cycle_filters = {
  --function(c, source_c) return not c.minimized end,  --luacheck: no unused args
},

rc.lua

 cyclefocus.key({ "Mod1", }, "Tab", {
          show_clients = false,
          focus_clients = false,
 }),
于 2021-05-05T20:23:11.540 回答
0

另一种选择是使用独立的第 3 方应用程序:https ://github.com/sagb/alttab

于 2017-12-15T13:09:59.603 回答