2011-04-09 13 views
2

我想知道当前机器有多少个X屏幕,以使我的.xmonad更通用一些;我有一台上网本和一台带有两台显示器的台式机,而且我也使用了几台单台的受监控设备。查找来自Haskell的X11屏幕的数量

为此,我希望能够找出当前机器有多少个X屏幕。 (我认为屏幕是正确的词,我的意思是物理监视器)。

原因是我想要xmobar的多个实例,每个显示器一个。我现在硬编码它在两个。

回答

4

如果使用the X11 package

import Graphics.X11.Xinerama (getScreenInfo) 

,将动态返回Rectangle个清单,告诉你有多少的屏幕,和它们的尺寸。

+0

如何获得显示器作为参数使用? – Squidly 2011-04-09 19:56:28

+0

在xmonad的情况下,'display'是'XConf'状态的一部分,所以使用例如'XMonad.Core'中的'withDisplay'。 – 2011-04-09 20:02:09

0

对于好奇,我结束了使用

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

我还发现了XMonad模块具有功能

screenCount :: Display -> Foreign.C.Types.CInt