Нахождение количества экранов X11 от Haskell
Я хотел бы знать, сколько экранов X имеет текущая машина, чтобы сделать мой.xmonad немного более общим; У меня есть нетбук, а также рабочий стол с двумя мониторами, и я также использую несколько компьютеров с одним монитором.
С этой целью я хотел бы узнать, сколько экранов X имеет текущая машина. (Я думаю, что экраны - правильные слова, я имею в виду физические мониторы).
Причина в том, что мне нужно несколько экземпляров xmobar, по одному на монитор. Я жестко закодировал это, чтобы быть на два в данный момент.
2 ответа
Решение
Если вы используете пакет X11:
import Graphics.X11.Xinerama (getScreenInfo)
который будет динамически возвращать список Rectangle
s, сообщая вам, сколько экранов и их размеры.
Для любопытных я в конечном итоге использовал
screenCount :: X Int
screenCount = withDisplay (io.fmap length.getScreenInfo)
Я также узнал, что модуль XMonad имеет функцию
screenCount :: Display -> Foreign.C.Types.CInt