在 XMonad 的多监视器设置中循环浏览工作区
Cycling through workspaces in multi monitor setup in XMonad
我目前正在使用 alt + ctrl + left 和 alt + ctrl + right 在工作区之间循环:
...
, ((altModMask .|. controlMask, xK_Left),
prevWS)
, ((altModMask .|. controlMask, xK_Right),
nextWS)
这适用于单显示器设置。但是,使用双显示器设置时会有点混乱。这是因为如果当前在另一个屏幕上可见,要显示的工作区将更改屏幕。例如,如果我在屏幕 0 上有 ws 1,在屏幕 1 上有 ws 2,并且焦点在屏幕 0 上:
1:term (2:web) 3:txt
当我现在执行 nextWS
时,当前在屏幕 1 上的 ws 2 将被绘制到屏幕 0,而屏幕 1 将显示 ws 1。
(1:term) 2:web 3:txt
我想要的是 prexWS
和 nextWS
将 跳过 工作区的行为当前显示在另一台显示器上,只有 select 当前未显示的工作区。
是否已经有这样的命令或者是否有一些 xmonad.hs
实施此命令的示例?
使用 xmonad-contrib
中的 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)
我目前正在使用 alt + ctrl + left 和 alt + ctrl + right 在工作区之间循环:
...
, ((altModMask .|. controlMask, xK_Left),
prevWS)
, ((altModMask .|. controlMask, xK_Right),
nextWS)
这适用于单显示器设置。但是,使用双显示器设置时会有点混乱。这是因为如果当前在另一个屏幕上可见,要显示的工作区将更改屏幕。例如,如果我在屏幕 0 上有 ws 1,在屏幕 1 上有 ws 2,并且焦点在屏幕 0 上:
1:term (2:web) 3:txt
当我现在执行 nextWS
时,当前在屏幕 1 上的 ws 2 将被绘制到屏幕 0,而屏幕 1 将显示 ws 1。
(1:term) 2:web 3:txt
我想要的是 prexWS
和 nextWS
将 跳过 工作区的行为当前显示在另一台显示器上,只有 select 当前未显示的工作区。
是否已经有这样的命令或者是否有一些 xmonad.hs
实施此命令的示例?
使用 xmonad-contrib
中的 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)