diff --git a/.config/xmonad/xmonad.hs b/.config/xmonad/xmonad.hs index 49369db..14aacd3 100644 --- a/.config/xmonad/xmonad.hs +++ b/.config/xmonad/xmonad.hs @@ -26,6 +26,7 @@ import XMonad.Util.EZConfig import qualified XMonad.Util.Hacks as Hacks import XMonad.Util.Loggers import XMonad.Util.NamedScratchpad +import XMonad.Util.Run (runProcessWithInput) import XMonad.Util.SpawnOnce -- Main @@ -191,12 +192,13 @@ myStatusBar nScreens i = "xmobar -x " ++ show i ++ " ~/.config/xmobar/" ++ rc rc = if nScreens > 1 && i /= 1 then "xmobarrc_hdmi" else "xmobarrc_laptop" -- One bar per screen, all restarted on every screen change: the right config for a --- screen id depends on the screen count, and dynamicSBs would keep the old bar +-- screen id depends on the screen count, and dynamicSBs would keep the old bar. +-- Kills by name (pkill waits) because killAllStatusBars' PID list can lose bars. restartStatusBars :: X () restartStatusBars = do - killAllStatusBars + _ <- runProcessWithInput "pkill" ["-x", "xmobar"] "" screens <- gets (W.screens . windowset) - forM_ screens $ \s -> let S i = W.screen s in spawnStatusBar (myStatusBar (length screens) i) + forM_ screens $ \s -> let S i = W.screen s in spawn (myStatusBar (length screens) i) myXmobarPP :: PP myXmobarPP =