From 7e9d7d6d4b38a42012cbd8ebe48ba7ee93ce50ef Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Sat, 31 Dec 2022 16:18:51 -0500 Subject: [PATCH] ENH use better types for wait --- bin/vbox-start.hs | 3 ++- lib/XMonad/Internal/IO.hs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bin/vbox-start.hs b/bin/vbox-start.hs index c918f38..57aecf2 100644 --- a/bin/vbox-start.hs +++ b/bin/vbox-start.hs @@ -21,6 +21,7 @@ import RIO import RIO.Process import qualified RIO.Text as T import System.Environment +import System.Process (Pid) import Text.XML.Light import XMonad.Internal.Concurrent.VirtualBox import XMonad.Internal.IO @@ -54,7 +55,7 @@ vmLaunch i = do "Failed to start VM: " <> displayBytesUtf8 (encodeUtf8 i) -vmPID :: T.Text -> RIO SimpleApp (Maybe Int) +vmPID :: T.Text -> RIO SimpleApp (Maybe Pid) vmPID vid = do (rc, out) <- proc "pgrep" ["-f", "VirtualBoxVM.*" ++ T.unpack vid] readProcessStdout return $ case rc of diff --git a/lib/XMonad/Internal/IO.hs b/lib/XMonad/Internal/IO.hs index 47b7862..6023619 100644 --- a/lib/XMonad/Internal/IO.hs +++ b/lib/XMonad/Internal/IO.hs @@ -31,6 +31,7 @@ import RIO.Directory import RIO.FilePath import qualified RIO.Text as T import System.IO.Error +import System.Process -------------------------------------------------------------------------------- -- read @@ -161,7 +162,7 @@ getPermissionsSafe f = do -- | Block until a PID has exited. -- Use this to control flow based on a process that was not explicitly started -- by the Haskell runtime itself, and thus has no data structures to query. -waitUntilExit :: (MonadIO m, Show t, Num t) => t -> m () +waitUntilExit :: (MonadIO m) => Pid -> m () waitUntilExit pid = do res <- doesDirectoryExist $ "/proc" show pid when res $ do