Se hai uno script di shell per avviare XMobar, allora stai "facendo qualcosa di sbagliato". Dovresti avviare xmobar usando le funzioni Haskell corrette nel file sorgente di configurazione di xmonad.hs. Dai un'occhiata alla mia funzione principale di configurazione:
-- 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
La linea saliente è questa:
xmonad =<< xmobar myBaseConfig
Questo esegue xmobar come dovrebbe essere eseguito, anche quando si ricarica xmonad. Ottieni la funzione 'xmobar' dall'istruzione:
import XMonad.Hooks.DynamicLog (xmobar)
Che a sua volta proviene dal pacchetto xmonad-contrib .
Quindi vedi, molte cose che vuoi fare con XMonad sono già un problema risolto, devi solo sapere dove cercare. Fondamentalmente, basta abbandonare la sceneggiatura e usarla invece. Spero che questo possa essere d'aiuto.
spawnPipe
codice sul sito Web XMonad, non è davvero facile sapere dove cercare! Ma alla fine, preferisco la tecnica che sto usando perché è più pulita, usandoDynamicLog
non ha ucciso il vecchio processo nei miei test. Mi piace molto XMonad, ma Haskell non è un buon linguaggio di configurazione.