From a6ef4c8c500aade359c8fa55a0facabcb5850f61 Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Wed, 28 Dec 2022 13:29:35 -0500 Subject: [PATCH] ENH make sure child processes are also killed --- bin/xmonad.hs | 5 ++--- lib/XMonad/Internal/Command/Desktop.hs | 2 +- lib/XMonad/Internal/Command/Power.hs | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/bin/xmonad.hs b/bin/xmonad.hs index 133598c..2c8eb31 100644 --- a/bin/xmonad.hs +++ b/bin/xmonad.hs @@ -189,7 +189,7 @@ features cl = FeatureSet startXmobar :: FIO (Process Handle () ()) startXmobar = do - p <- proc "xmobar" [] (startProcess . setStdin createPipe) + p <- proc "xmobar" [] (startProcess . setStdin createPipe . setCreateGroup True) io $ hSetBuffering (getStdin p) LineBuffering return p @@ -263,8 +263,7 @@ runCleanup ts db = io $ do killNoWait p = do let ph = unsafeProcessHandle p i <- getPid ph - forM_ i $ signalProcess sigTERM - -- terminateProcess ph + forM_ i $ signalProcessGroup sigTERM stopNoWait p -------------------------------------------------------------------------------- diff --git a/lib/XMonad/Internal/Command/Desktop.hs b/lib/XMonad/Internal/Command/Desktop.hs index eb6d58f..724606d 100644 --- a/lib/XMonad/Internal/Command/Desktop.hs +++ b/lib/XMonad/Internal/Command/Desktop.hs @@ -257,7 +257,7 @@ runNetAppDaemon cl = Sometimes "network applet" xpfVPN where tree = toAnd_ app $ Bus networkManagerPkgs networkManagerBus app = DBusIO $ sysExe [Package Official "network-manager-applet"] "nm-applet" - cmd _ = proc "nm-applet" [] startProcess + cmd _ = proc "nm-applet" [] (startProcess . setCreateGroup True) runToggleBluetooth :: Maybe SysClient -> SometimesX runToggleBluetooth cl = Sometimes "bluetooth toggle" xpfBluetooth diff --git a/lib/XMonad/Internal/Command/Power.hs b/lib/XMonad/Internal/Command/Power.hs index 2af7922..9ae61de 100644 --- a/lib/XMonad/Internal/Command/Power.hs +++ b/lib/XMonad/Internal/Command/Power.hs @@ -93,7 +93,7 @@ runAutolock = sometimesIO_ "automatic screen lock" "xss-lock" tree cmd where tree = And_ (Only_ $ sysExe [Package Official "xss-lock"] "xss-lock") $ Only_ $ IOSometimes_ runScreenLock - cmd = proc "xss-lock" ["--ignore-sleep", "screenlock"] startProcess + cmd = proc "xss-lock" ["--ignore-sleep", "screenlock"] (startProcess . setCreateGroup True) -------------------------------------------------------------------------------- -- | Confirmation prompts