По умолчанию xmonad обрабатывает every display separately. Я могу переключиться на каждый дисплей и разместить на нем рабочее пространство. Это прекрасно работает и имеет смысл.Сделайте Xmonad обработкой нескольких мониторов как один
Теперь у меня возникла проблема в том, что дисплей 4k, подключенный через DisplayPort 1.2 с графической картой NVidia, представлен в виде двух дисплеев для системы, по одному дисплею для каждой половины монитора. Я могу объединить их снова с помощью xrandr, но xmonad по-прежнему рассматривает их как два дисплея, а это означает, что я не могу поместить одно окно на весь экран (кроме случаев, когда он плавает).
Я уже пытался изменить метод rescreen
в Operations.hs
в источнике xmonad, чтобы всегда возвращать фиксированный макет вместо макета, возвращаемого системой, но это ничего не меняло. Реквизиты:
ghc -e "Graphics.X11.openDisplay [] >>= Graphics.X11.Xinerama.getScreenInfo"
restults в
[Rectangle {rect_x = 4080, rect_y = 584, rect_width = 1920, rect_height = 2160}, -- D, DP-4.9
Rectangle {rect_x = 2160, rect_y = 584, rect_width = 1920, rect_height = 2160}, -- C, DP-4.8
Rectangle {rect_x = 0, rect_y = 1920, rect_width = 2160, rect_height = 1920}, -- B, DP-2.8
Rectangle {rect_x = 0, rect_y = 0, rect_width = 2160, rect_height = 1920}] -- A, DP-2.9
Что соответствует с макетом, сообщенные XRandR:
A
C D
B
C: DP-4.8 connected primary 1920x2160+4080+584 (normal left inverted right x axis y axis) 527mm x 296mm
D: DP-4.9 connected 1920x2160+2160+584 (normal left inverted right x axis y axis) 527mm x 296mm
B: DP-2.8 connected 2160x1920+0+1920 left (normal left inverted right x axis y axis) 527mm x 296mm
A: DP-2.9 connected 2160x1920+0+0 left (normal left inverted right x axis y axis) 527mm x 296mm
(я добавил физическое расположение для ясности)
Я пытался дайте функции rescreen фиксированную прямоугольную компоновку, где каждый прямоугольник охватывает обе стороны дисплея:
myFixed = [Rectangle {rect_x = 2160, rect_y = 584, rect_width = 3840, rect_height = 2160}, -- C, D
Rectangle {rect_x = 0, rect_y = 0, rect_width = 2160, rect_height = 3840}] -- A, B
-- | Cleans the list of screens according to the rules documented for
-- nubScreens.
getCleanedScreenInfo :: MonadIO m => Display -> m [Rectangle]
getCleanedScreenInfo = io . fmap nubScreens . (const $ return myFixed)
Но это ничего не меняло.
Есть ли вариант конфигурации для этого? Я также был бы рад изменить исходный код, мой макет не изменится какое-то время.