XMobarを起動するシェルスクリプトがある場合は、「間違っている」ことになります。xmonad.hs構成ソースファイルの正しいHaskell関数を使用してxmobarを起動する必要があります。私の設定のメイン関数を見てみましょう:
-- put it all together
main = do
nScreens <- countScreens -- just in case you are on a laptop like me count the screens so that you can go
xmonad =<< xmobar myBaseConfig
{ modMask = myModMask
, workspaces = withScreens nScreens myWorkspaces
, layoutHook = myLayoutHook nScreens
, manageHook = myManageHook
, borderWidth = myBorderWidth
, normalBorderColor = myNormalBorderColor
, focusedBorderColor = myFocusedBorderColor
, keys = myKeys
, mouseBindings = myMouseBindings
, logHook = myLogHook
}
where
myLogHook = dynamicLogXinerama
myBaseConfig = gnomeConfig
顕著なラインはこれです:
xmonad =<< xmobar myBaseConfig
これは、xmonadをリロードした場合でも、実行されるはずのxmobarを実行します。次のステートメントから「xmobar」関数を取得します。
import XMonad.Hooks.DynamicLog (xmobar)
これは、xmonad-contribパッケージに由来します。
つまり、XMonadで実行したいことのほとんどは既に解決済みの問題であり、どこを見ればよいのかを知っているだけです。基本的には、スクリプトを破棄して、代わりにそれを使用します。これがお役に立てば幸いです。
spawnPipe
XMonadのウェブサイトでコードを見つけました。しかし、結局のところ、私が使用している手法はよりクリーンDynamicLog
で、テストで古いプロセスを殺すことはなかったので、私は好みます。私はXMonadが本当に好きですが、Haskellは良い構成言語ではありません。