Se você possui um script de shell para iniciar o XMobar, está 'fazendo errado'. Você deve iniciar o xmobar usando as funções Haskell corretas no arquivo de configuração xmonad.hs. Dê uma olhada na minha principal função de configurações:
-- 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
A linha saliente é esta:
xmonad =<< xmobar myBaseConfig
Isso executa o xmobar como deveria ser executado, mesmo quando você recarrega o xmonad. Você obtém a função 'xmobar' da instrução:
import XMonad.Hooks.DynamicLog (xmobar)
Por sua vez, vem do pacote xmonad-contrib .
Como você vê, a maioria das coisas que você deseja fazer com o XMonad já é um problema resolvido, basta saber onde procurar. Basicamente, basta abandonar seu script e usá-lo. Eu espero que isso ajude.
spawnPipe
código no site do XMonad, não é realmente fácil saber onde procurar! Mas no final, prefiro a técnica que estou usando, pois ela é mais limpa,DynamicLog
não matou o antigo processo nos meus testes. Eu realmente gosto do XMonad, mas Haskell não é uma boa linguagem de configuração.spawnPipe
irá bifurcar um processo em um novo segmento. Se você desejaspawnPipe
criar um processo filho (que fecha quando o processo principal o faz), receio que você tenha que escrever sua própriaspawnPipe
função.