diff options
Diffstat (limited to 'XMonad')
-rw-r--r-- | XMonad/Core.hs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/XMonad/Core.hs b/XMonad/Core.hs index 5fe8688..b3593a0 100644 --- a/XMonad/Core.hs +++ b/XMonad/Core.hs @@ -32,6 +32,7 @@ module XMonad.Core ( import XMonad.StackSet hiding (modify) import Prelude hiding ( catch ) +import Codec.Binary.UTF8.String (encodeString) import Control.Exception.Extensible (catch, fromException, try, bracket, throw, finally, SomeException(..)) import Control.Applicative import Control.Monad.State @@ -384,12 +385,14 @@ catchIO f = io (f `catch` \(SomeException e) -> hPrint stderr e >> hFlush stderr -- | spawn. Launch an external application. Specifically, it double-forks and -- runs the 'String' you pass as a command to \/bin\/sh. +-- +-- Note this function assumes your locale uses utf8. spawn :: MonadIO m => String -> m () spawn x = spawnPID x >> return () -- | Like 'spawn', but returns the 'ProcessID' of the launched application spawnPID :: MonadIO m => String -> m ProcessID -spawnPID x = xfork $ executeFile "/bin/sh" False ["-c", x] Nothing +spawnPID x = xfork $ executeFile "/bin/sh" False ["-c", encodeString x] Nothing -- | A replacement for 'forkProcess' which resets default signal handlers. xfork :: MonadIO m => IO () -> m ProcessID |