我将 xmonad 与双显示器设置一起使用。
这是我的配置的精简版:
import XMonad
main = do
xmonad $ defaultConfig {
workspaces = ["1:db", "2:mail", "3:web", "4:dev", "5", "6", "7", "8:chat", "9", "10"]
}
Run Code Online (Sandbox Code Playgroud)
有没有办法配置它,以便我的左屏幕默认为工作区2:mail
,右屏幕默认为工作区3:web
?
是的。有两种方法可以实现:
重新排序工作区的技巧(假设您的左屏幕是主屏幕,您可以用来xrandr -q
检查)
workspaces = ["2:mail", "3:web", "4:dev", "5", "6", "7", "8:chat", "9", "10", "1:db"]
associatedKeySyms = [xK_2 .. xK_9] ++ [xK_0, xK_1]
这里的关键是 的顺序associatedKeySyms
,因为 xmonad 不关心工作区的名称。如果您不在状态栏上显示工作区名称,这将起作用。更简单的方法是只改associatedKeySyms
而不改workspaces
。但是,如果您确实需要显示工作区名称(您可能希望看到“1:db”排在第一位并与 关联mod+1
),那么您需要遵循下一个解决方案。
基本上,您需要侵入StackSet
(XMonad.StackSet
https://github.com/xmonad/xmonad/blob/master/src/XMonad/StackSet.hs )来操纵屏幕和工作区之间的绑定。您需要将代码写入startupHook
配置文件中,以便在加载 xmonad 时执行它。
XMonad.Actions.PhysicalScreens
如果您想指定右屏幕或左屏幕而不是屏幕 ID,则可能还需要。
我刚刚开始使用xmonad,还没有完全按照你的要求去做。我有类似的需求,但不仅仅是在 xmonad 启动时。我尝试破解启动过程和重新筛选过程(新显示器连接/断开连接),并希望您在编写自己的配置时发现我的一些配置很有用。https://github.com/subbyte/subXMonad