xmonad를 다시 로드할 때 xmobar를 깔끔하게 다시 생성합니다.

xmonad를 다시 로드할 때 xmobar를 깔끔하게 다시 생성합니다.

이것은 단지 작은 성가심일 뿐이지만 다음 코드를 사용하여 XMonad 구성 파일이 xmobar를 로드하도록 만들었습니다.

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

잘 작동하지만 XMonad가 다시 로드될 때마다 새로운 xmobar 프로세스가 생성됩니다. 늙은이를 쉽게 죽일 수 있는 방법이 없을까?

업데이트: entropo가 제안한 대로 다음과 같은 bash 스크립트를 만들었습니다.

#!/bin/bash

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

/usr/bin/xmobar &

XMonad 구성 파일에서 해당 스크립트를 호출합니다.

답변1

xmonad에 국한되지는 않지만 기존 xmobar 프로세스를 확인하는 쉘 스크립트를 통해 xmobar를 시작할 수 있습니다. 예를 들어,http://bash.cyberciti.biz/web-server/restart-apache2-httpd-shell-script/

답변2

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로 수행하려는 대부분의 작업은 이미 해결된 문제이므로 어디를 봐야 할지 알아야 합니다. 기본적으로 스크립트를 버리고 대신 사용하세요. 이게 도움이 되길 바란다.

관련 정보