【问题标题】:XMonad cycle through all windows on visible workspacesXMonad 循环浏览可见工作区上的所有窗口
【发布时间】:2021-04-04 18:12:45
【问题描述】:

我在双屏设置上使用 XMonad,并且希望能够通过任一屏幕上可见的每个窗口循环焦点(例如,使用 alt+tab)。行为类似于 XMonad.Actions.WindowNavigation,除了它不会绑定到一个方向,而是以某种有意义的顺序循环它们(例如从左到右,从上到下)。

我发现了一些代码here 声称可以操纵 StackSet 来解决这个问题,我得到了它来编译,但它不会做我想要的。不幸的是,我对 Haskell 的理解非常有限,所以我无法自己编写或修复上面代码中的任何问题。

【问题讨论】:

    标签: haskell xmonad


    【解决方案1】:

    您可以在xmonad-contrib 中使用CycleWS 模块

    它具有可用于在非空工作区中循环的绑定:

    import XMonad.Actions.CycleWS
    
    myKeys homeDir conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
        [ -- (your own bindings here)
        -- Cycle non-empty workspaces with mod+tab or mod+shift+tab
        , ((modm              , xK_Tab   ), moveTo Next NonEmptyWS)
        , ((modm .|. shiftMask, xK_Tab   ), moveTo Prev NonEmptyWS)
        ]
    

    如果你想要一个完整的例子,我的完整配置是here

    【讨论】:

    • 感谢您的回复!我认为 CycleWS 让我可以循环浏览工作区,但我真正想做的是能够跨窗口移动焦点,而无需实际循环工作区。因此,如果我有两个屏幕,工作区 1 和 2 可见,并且我目前专注于工作区 1 中的一个窗口,我希望能够绑定 alt-tab 以将焦点移动到工作区 1 和 2 中打开的所有窗口。这有意义吗?
    【解决方案2】:

    这个功能已经被这个pull request添加到xmonad-contrib。

    示例用法:

    import XMonad.Actions.GroupNavigation
    

    在按键部分

    -- use Alt+Tab and Alt+Shift+Tab to change focus to different windows across workspaces
    ((alt,           xK_Tab   ), nextMatch Forward isOnAnyVisibleWS),
    ((alt .|. shift, xK_Tab   ), nextMatch Backward isOnAnyVisibleWS),
    

    【讨论】:

      猜你喜欢
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      相关资源
      最近更新 更多