如何将当前工作空间而不是当前窗口发送到其他屏幕?

时间:2019-02-07 20:03:32

标签: xmonad

有时候我想将整个当前工作空间发送到另一个屏幕,而不仅仅是当前窗口。

我知道greedyView会将指定的工作区显示在当前屏幕上。

但是,如果我

  1. 不想首先进入目标屏幕以运行greedyView,而是想直接将当前关注的工作空间发送到另一个屏幕。

  2. 不想将目标屏幕上的原始工作空间交换到原始屏幕上(即,原始工作空间现在应该不再投影到任何屏幕上)

greedyView似乎无法满足上述两个需求。另外,我更喜欢将view而不是greedyView与我的默认键绑定一起使用。

还有其他选择吗?谷歌搜索似乎并没有带来任何有用的结果。

1 个答案:

答案 0 :(得分:1)

您可能必须执行自己的功能。如果您看一下greedyView的实现方式:

greedyView :: (Eq s, Eq i) => i -> StackSet i l a s sd -> StackSet i l a s sd
greedyView w ws
     | any wTag (hidden ws) = view w ws
     | (Just s) <- L.find (wTag . workspace) (visible ws)
                            = ws { current = (current ws) { workspace = workspace s }
                                 , visible = s { workspace = workspace (current ws) }
                                           : L.filter (not . wTag . workspace) (visible ws) }
     | otherwise = ws
   where wTag = (w == ) . tag

所以相关的行是:

ws {
    current = (current ws) { workspace = workspace s }
  , visible = s { workspace = workspace (current ws) } : L.filter (not . wTag . workspace) (visible ws)
  }