我在双屏幕设置中使用XMonad,并且希望能够在任一屏幕上显示的每个窗口(例如,使用alt + tab)循环焦点。行为类似于XMonad.Actions.WindowNavigation,除了它不会被绑定到一个方向,只是以某种有意义的顺序循环它们(例如从左到右,从上到下)。
我发现了一些声称操纵StackSet来解决这个问题的代码here,我把它编译好但是它不会做我想要的。不幸的是,我对Haskell的理解非常有限,所以我无法自己编写或修复上述代码的任何错误。
答案 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),