【问题标题】:awesome: alt+tab just switches between two apps很棒:alt+tab 只是在两个应用程序之间切换
【发布时间】:2012-07-26 16:20:28
【问题描述】:

我刚刚安装了 awesome 作为我的 wm。当我使用 awesome 进行 alt+tab 时,它只是切换了两个应用程序,无法激活其他应用程序..有什么想法吗?

【问题讨论】:

  • 按住 alt 键多次按下。
  • @Daniel 谢谢,但它只能在两个应用程序之间切换

标签: window focus awesome-wm


【解决方案1】:

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

【讨论】:

  • 在大多数窗口管理器中,Alt + Tab 的好处在于,它会按照它们最近关注的顺序在窗口中循环。另一方面,Awesome 中的 Mod + j 以预先确定的顺序在窗口中循环,这对我来说几乎没有那么有用。
  • @JimGarrison 查看我的回答。我为此创建了一个模块:github.com/blueyed/awesome-cyclefocus
【解决方案2】:

默认情况下,客户端将焦点设置为上一个具有焦点的窗口。当您 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 时,它会以相反的顺序循环。 (--开头的两行是cmets,所以不影响结果。)

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

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),

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

【讨论】:

  • 这肯定确实有效。您可能需要重新启动 awesome 或运行 kill -s SIGHUP $(which awesome) 才能使其生效。
  • 我刚开始使用 awesome。非常有用的配置提示,谢谢!
  • 第一个解决方案与modkey+jmodkey+k的默认解决方案相同。
【解决方案3】:

我对 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。 :)

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

【讨论】:

    【解决方案4】:

    我为此创建了一个模块:https://github.com/blueyed/awesome-cyclefocus

    它支持Alt-Tab 的不同方法(参见自述文件),并且可以通过在窗口循环时应用的过滤器轻松配置为您喜欢的方式,例如仅过滤具有相同 WM 类或在相同屏幕/标签上的窗口。

    【讨论】:

    • @ChristopherCorley 太好了。我有很多本地的、未提交的修改正在酝酿中,例如在循环期间使用 on-top 并通过回调在非当前窗口上设置不透明度。如果您遗漏了什么等,请在 Github 问题中告诉我。
    • 太棒了! IMO awesomewm 中的默认 Alt-Tab 不是很好,这个模块修复了它:)
    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

        • 编辑很棒的配置(如上所示):只会在未最小化的窗口中循环。
        • awesome_alttab 已弃用
        • awesome-switcher 真棒 3.5
        • cycle-focus:终于!我只有在 注释掉 line 102 之后才开始工作,但 不是 通过在 rc.lua 中用空的 cycle_filters 覆盖

        awesome-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,
         }),
        

        【讨论】:

          猜你喜欢
          • 2014-06-17
          • 1970-01-01
          • 2018-10-19
          • 1970-01-01
          • 2016-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多