ラップトップでXMonadを実行していますが、必ずしもそうとは限りませんが、追加のモニタが接続されていることがあります。私はxmonad.hs
のスクリーンの数をスクリーンごとにXMobarのインスタンスを検出したいと思います。XMonadの各画面にXMobarのインスタンスを配置する方法は?
私はthis question and answerを見てきましたが、私は本当にモナド変圧器の周りに私の頭を持っていませんでしたし、どのタイプX [Rectangle]
の値を使用するように。
今、私は、大体、このている:
import XMonad
import XMonad.Config.Desktop
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Core (X ,withDisplay ,io)
import Graphics.X11.Xinerama (getScreenInfo)
import Graphics.X11.Xlib.Types (Rectangle)
import System.IO
xdisplays :: X [Rectangle]
xdisplays = withDisplay $ io . getScreenInfo
main = do
xmproc <- spawnPipe "/usr/bin/xmobar /home/liam/.xmobarrc"
xmonad $ desktopConfig
{ layoutHook = avoidStruts $ layoutHook defaultConfig,
manageHook = manageHook defaultConfig <+> manageDocks,
logHook = dynamicLogWithPP xmobarPP
{ ppOutput = hPutStrLn xmproc
}
}
単純に、私は、私のDOブロックの開始時にrects <- xdisplays
を入れたいのですが、その後、適切xmobarインスタンスを起動が、明らかにこれはしていませんタイプがX [Rectangle]
でないためIO [Rectangle]
です。どういうわけかrunXを使用する必要があるのだろうかと思いましたか?