Kill xmobars by name when restarting status bars
killAllStatusBars only kills the PIDs xmonad has stored, and bars that dropped off that list kept running after M-q and movie, leaving a laptop-config bar on HDMI. pkill -x xmobar catches them all.
This commit is contained in:
@@ -26,6 +26,7 @@ import XMonad.Util.EZConfig
|
|||||||
import qualified XMonad.Util.Hacks as Hacks
|
import qualified XMonad.Util.Hacks as Hacks
|
||||||
import XMonad.Util.Loggers
|
import XMonad.Util.Loggers
|
||||||
import XMonad.Util.NamedScratchpad
|
import XMonad.Util.NamedScratchpad
|
||||||
|
import XMonad.Util.Run (runProcessWithInput)
|
||||||
import XMonad.Util.SpawnOnce
|
import XMonad.Util.SpawnOnce
|
||||||
|
|
||||||
-- Main
|
-- 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"
|
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
|
-- 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 :: X ()
|
||||||
restartStatusBars = do
|
restartStatusBars = do
|
||||||
killAllStatusBars
|
_ <- runProcessWithInput "pkill" ["-x", "xmobar"] ""
|
||||||
screens <- gets (W.screens . windowset)
|
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 :: PP
|
||||||
myXmobarPP =
|
myXmobarPP =
|
||||||
|
|||||||
Reference in New Issue
Block a user