XMonad:将启动时的默认工作区设置为特定监视器

ili*_*oly 7 xmonad

我将 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

Xia*_*Shu 2

是的。有两种方法可以实现:

  1. 重新排序工作区的技巧(假设您的左屏幕是主屏幕,您可以用来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),那么您需要遵循下一个解决方案。

  2. 基本上,您需要侵入StackSetXMonad.StackSethttps://github.com/xmonad/xmonad/blob/master/src/XMonad/StackSet.hs 来操纵屏幕和工作区之间的绑定。您需要将代码写入startupHook配置文件中,以便在加载 xmonad 时执行它。

XMonad.Actions.PhysicalScreens如果您想指定屏幕或屏幕而不是屏幕 ID,则可能还需要。

我刚刚开始使用xmonad,还没有完全按照你的要求去做。我有类似的需求,但不仅仅是在 xmonad 启动时。我尝试破解启动过程和重新筛选过程(新显示器连接/断开连接),并希望您在编写自己的配置时发现我的一些配置很有用。https://github.com/subbyte/subXMonad