问题
I'd like to know how many X screens the current machine has, to make my .xmonad a little more general; I have a netbook as well as a desktop with two monitors, and I use several single monitored machines too.
To this end, I'd like to be able to find out how many X screens the current machine has. (I think screens is the correct words, I mean physical monitors).
The reason being is that I want multiple instances of xmobar, one per monitor. I've hard coded it to be on two at the moment.
回答1:
If you use the X11 package:
import Graphics.X11.Xinerama (getScreenInfo)
that will dynamically return a list of Rectangle
s, telling you how many screens, and their dimensions.
回答2:
For the curious, I ended up using
screenCount :: X Int
screenCount = withDisplay (io.fmap length.getScreenInfo)
I also found out that the XMonad module has a function
screenCount :: Display -> Foreign.C.Types.CInt
来源:https://stackoverflow.com/questions/5607326/finding-the-number-of-x11-screens-from-haskell