From c7721521abd7bb7bb91b33c6f9e66adac9d3c76d Mon Sep 17 00:00:00 2001 From: Spencer Janssen Date: Fri, 13 Feb 2009 00:46:08 +0100 Subject: SpawnOn: add 'exec' to shell strings where possible Ignore-this: c7de4e05803d60b10f38004dcbda4732 darcs-hash:20090212234608-25a6b-50ee5321e891aa595cd247ac2e4823f08df266f3.gz --- XMonad/Actions/SpawnOn.hs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'XMonad/Actions/SpawnOn.hs') diff --git a/XMonad/Actions/SpawnOn.hs b/XMonad/Actions/SpawnOn.hs index 80723a8..ec1d57d 100644 --- a/XMonad/Actions/SpawnOn.hs +++ b/XMonad/Actions/SpawnOn.hs @@ -26,6 +26,7 @@ module XMonad.Actions.SpawnOn ( shellPromptOn ) where +import Data.List (isInfixOf) import Data.IORef import System.Posix.Types (ProcessID) @@ -100,5 +101,11 @@ spawnHere sp cmd = withWindowSet $ \ws -> spawnOn sp (W.currentTag ws) cmd -- application on given workspace. spawnOn :: Spawner -> WorkspaceId -> String -> X () spawnOn sp ws cmd = do - p <- spawnPID cmd + p <- spawnPID $ mangle cmd io $ modifyIORef (pidsRef sp) (take maxPids . ((p, ws) :)) + where + -- TODO this is silly, search for a better solution + mangle xs | any (`elem` metaChars) xs || "exec" `isInfixOf` xs = xs + | otherwise = "exec " ++ xs + metaChars = "&|;" + -- cgit v1.2.3