XMonad循环浏览所有可见屏幕

时间:2017-02-22 17:45:27

标签: haskell xmonad

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

此功能已被此 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),