在XMonad中的多显示器设置中循环工作区

时间:2017-06-04 14:58:51

标签: xmonad multiple-monitors

我目前正在使用alt-ctrl-left和alt-ctrl-left在工作区之间循环:

   , ((altModMask .|. controlMask, xK_Left),
     prevWS)
   , ((altModMask .|. controlMask, xK_Right),
     nextWS)

这适用于单显示器设置。但是,使用双显示器设置时有点混乱。这是因为如果当前在另一个屏幕上可见,则要显示的工作空间将更改屏幕。例如,如果我在屏幕0上有ws 1,在屏幕1上有ws 2并且将焦点放在屏幕0上:

1:term (2:web) 3:txt

当我现在执行" nextWS",ws 2时,当前在屏幕1上将被绘制到屏幕0,而屏幕1将显示为ws 1.

(1:term) 2:web 3:txt

我想要的是一种行为,其中prexWS和nextWS将 跳过 当前在另一台监视器上显示的工作区,并且只选择当前不是的工作区所示。

是否已经存在这样的命令,或者是否有一些xmonad.hs示例实现了这个?

1 个答案:

答案 0 :(得分:3)

使用xmonad-contribs中的XMonad.Actions.DynamicWorkspaceOrder

import qualified XMonad.Actions.DynamicWorkspaceOrder as DO

   , ((altModMask .|. controlMask, xK_Left),
     DO.moveTo Prev HiddenNonEmptyWS)
   , ((altModMask .|. controlMask, xK_Right),
     DO.moveTo Next HiddenNonEmptyWS)