
Esto es solo una pequeña molestia, pero hice que el archivo de configuración de XMonad cargara xmobar usando este código:
xmproc <- spawnPipe "/use/bin/xmobar ~/.xmobarrc"
Funciona bien, pero genera un nuevo proceso xmobar cada vez que se recarga XMonad. Me pregunto si hay una manera fácil de matar al viejo.
actualizar: Según lo sugerido por entropo, he creado un script bash como este:
#!/bin/bash
for PID in `pgrep xmobar`; do
kill ${PID} > /dev/null &
done
/usr/bin/xmobar &
y llame a ese script desde el archivo de configuración de XMonad.
Respuesta1
No es específico de xmonad, pero puede iniciar xmobar a través de un script de shell que verifique si hay un proceso xmobar existente. Ver, por ejemplo,http://bash.cyberciti.biz/web-server/restart-apache2-httpd-shell-script/
Respuesta2
Si tiene un script de shell para iniciar XMobar, entonces lo está haciendo mal. Debería iniciar xmobar usando las funciones correctas de Haskell en el archivo fuente de configuración xmonad.hs. Eche un vistazo a la función principal de mis configuraciones:
-- 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 línea más destacada es ésta:
xmonad =<< xmobar myBaseConfig
Eso ejecuta xmobar como debería ejecutarse, incluso cuando recarga xmonad. Obtienes la función 'xmobar' de la declaración:
import XMonad.Hooks.DynamicLog (xmobar)
que a su vez proviene de lapaquete xmonad-contrib.
Como ves, la mayoría de las cosas que quieres hacer con XMonad ya son un problema resuelto, sólo tienes que saber dónde buscar. Básicamente, simplemente deshazte de tu script y úsalo en su lugar. Espero que esto ayude.