Определение количества экранов X11 из Haskell

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

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

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


person Squidly    schedule 09.04.2011    source источник


Ответы (2)


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

 import Graphics.X11.Xinerama (getScreenInfo)

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

person Don Stewart    schedule 09.04.2011
comment
Как заставить дисплей использовать в качестве параметра? - person Squidly; 09.04.2011
comment
В случае xmonad display является частью состояния XConf, поэтому используйте, например, withDisplay из XMonad.Core. - person Don Stewart; 10.04.2011

Для любопытных я использовал

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

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

 screenCount :: Display -> Foreign.C.Types.CInt
person Squidly    schedule 12.04.2011