Нахождение количества экранов X11 от Haskell

Я хотел бы знать, сколько экранов X имеет текущая машина, чтобы сделать мой.xmonad немного более общим; У меня есть нетбук, а также рабочий стол с двумя мониторами, и я также использую несколько компьютеров с одним монитором.

С этой целью я хотел бы узнать, сколько экранов X имеет текущая машина. (Я думаю, что экраны - правильные слова, я имею в виду физические мониторы).

Причина в том, что мне нужно несколько экземпляров xmobar, по одному на монитор. Я жестко закодировал это, чтобы быть на два в данный момент.

2 ответа

Решение

Если вы используете пакет X11:

 import Graphics.X11.Xinerama (getScreenInfo)

который будет динамически возвращать список Rectangles, сообщая вам, сколько экранов и их размеры.

Для любопытных я в конечном итоге использовал

 screenCount :: X Int  
 screenCount = withDisplay (io.fmap length.getScreenInfo)

Я также узнал, что модуль XMonad имеет функцию

 screenCount :: Display -> Foreign.C.Types.CInt
Другие вопросы по тегам