当我使用 i3 或 Gnome 时,每个显示器都有一个工作区/桌面,但在 XMonad 下,我的笔记本电脑屏幕和外接显示器连接为一个大屏幕(如图所示xdpyinfo
)
如何配置 X 使用两个屏幕而不是一个?
答案1
似乎您的 XMonad 未使用 Xinerama 支持进行编译。您可以按照以下说明进行检查:https://wiki.haskell.org/Xmonad/Frequently_asked_questions#Multi_head_or_xinerama_troubles
要诊断问题,请在命令行上执行以下命令:
ghc -e Graphics.X11.Xinerama.compiledWithXinerama
如果输出为 True,请跳至下面的 getScreenInfo 测试。如果输出为 False,则您的 Haskell X11 库不是针对 Xinerama 构建的。
答案2
感谢您告诉我有关 XMonad 的信息。它看起来是一个值得尝试的有趣的窗口管理器。正如我刚刚在您昨天发帖时才了解到的那样,而且我没有双显示器配置,我通常不会回答这个问题,但已经过去一天了,所以我想我至少会有一些答案。
查阅其文档:https://wiki.haskell.org/Xmonad/Frequently_asked_questions,我找到了一个链接https://hackage.haskell.org/package/xmonad-contrib-0.15/docs/XMonad-Layout-IndependentScreens.html这显然告诉你如何真正做你想做的事。
您需要将类似以下内容添加到您的~/.xmonad/xmonad.hs
文件中:
import XMonad.Layout.IndependentScreens
myConfig = def { workspaces = withScreens 2 ["name1", "name2"] }
之后,该页面进一步解释如何设置键绑定以引用各个工作区。显然,默认配置文件中有一行用于键绑定:
[((m .|. modm, k), windows $ f i)
这需要更改为
[((m .|. modm, k), windows $ onCurrentScreen f i)
这就是我在没有实际使用过该页面的情况下所能了解到的全部内容。