Limpa respawning xmobar quando recarregar xmonad

9

Este é apenas um pequeno incômodo, mas eu fiz o arquivo de configuração do XMonad carregar o xmobar usando este código:

xmproc <- spawnPipe "/use/bin/xmobar ~/.xmobarrc"

Funciona bem, mas gera um novo processo xmobar toda vez que o XMonad é recarregado. Eu me pergunto se há uma maneira fácil de matar o antigo?

update : Como sugerido por entropo, criei um script bash como este:

#!/bin/bash

for PID in 'pgrep xmobar'; do
    kill ${PID} > /dev/null &
done

/usr/bin/xmobar &

e chame esse script do arquivo de configuração do XMonad.

    
por Nicolas Buduroi 08.04.2011 / 22:39

2 respostas

4

Não específico do xmonad, mas você pode iniciar o xmobar por meio de um script de shell que verifica um processo xmobar existente. Veja, por exemplo, link

    
por 08.04.2011 / 23:07
14

Se você tem um shell script para iniciar o XMobar, então está "fazendo errado". Você deve iniciar o xmobar usando as funções Haskell corretas no arquivo de origem de configuração xmonad.hs. Dê uma olhada na minha função principal de configuração:

-- 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 ele deve ser executado, mesmo quando você recarrega o xmonad. Você obtém a função 'xmobar' da declaração:

import XMonad.Hooks.DynamicLog (xmobar)

Que, por sua vez, vem do pacote xmonad-contrib .

Então você vê, a maioria das coisas que você quer fazer com o XMonad já são um problema resolvido, você só precisa saber onde procurar. Basicamente, apenas abandone seu script e use isso. Espero que isso ajude.

    
por 10.04.2011 / 00:30

Tags