首页 > 解决方案 > 如何将当前工作区而不是当前窗口发送到不同的屏幕?

问题描述

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

我知道这greedyView会将指定的工作区放到当前屏幕上。

但是,如果我

  1. 不想先到目标屏幕才能运行greedyView,而是想直接将当前聚焦的工作区发送到另一个屏幕。

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

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

有没有其他选择?谷歌搜索似乎没有出现任何有用的结果。

标签: xmonad

解决方案


您可能必须制作自己的功能。如果你看一下 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)
  }

推荐阅读