diff options
-rw-r--r-- | XMonad/Core.hs | 5 | ||||
-rw-r--r-- | xmonad.cabal | 3 |
2 files changed, 6 insertions, 2 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 diff --git a/xmonad.cabal b/xmonad.cabal index cc37051..9cfd671 100644 --- a/xmonad.cabal +++ b/xmonad.cabal @@ -46,7 +46,8 @@ library build-depends: base < 5 && >=3, containers, directory, process, filepath, extensible-exceptions else build-depends: base < 3 - build-depends: X11>=1.5.0.0 && < 1.6, mtl, unix + build-depends: X11>=1.5.0.0 && < 1.6, mtl, unix, + utf8-string >= 0.3 && < 0.4 if true ghc-options: -funbox-strict-fields -Wall |