diff options
author | gwern0 <gwern0@gmail.com> | 2008-02-05 04:18:24 +0100 |
---|---|---|
committer | gwern0 <gwern0@gmail.com> | 2008-02-05 04:18:24 +0100 |
commit | eacbec4b7e012eca16b616fae36134a444a8f6a3 (patch) | |
tree | 6b38537e9e89f341c87e8a980d7e037a25e7a211 /XMonad | |
parent | 459d5887fd0e5ede4c3e2773a5cddcacaa62820e (diff) | |
download | XMonadContrib-eacbec4b7e012eca16b616fae36134a444a8f6a3.tar.gz XMonadContrib-eacbec4b7e012eca16b616fae36134a444a8f6a3.tar.xz XMonadContrib-eacbec4b7e012eca16b616fae36134a444a8f6a3.zip |
Run.hs: add an option to runinterms
It turns out that for urxvt, and most terminal, apparently, once you give a '-e' option, that's it.
They will not interpret anything after that as anything but input for /bin/sh, so if you wanted to go 'runInTerm "'screen -r session' -title IRC"',
you were SOL - the -title would not be seen by urxvt. This, needless to say, is bad, since then you can't do stuff like set the title which means
various hooks and extensions are helpless. This patch adds an extra options argument which is inserted *before* the -e. If you want the old behaivour,
you can just go 'runInTerm "" "executable"', but now if you need to do something extra, 'runInTerm "-title mutt" "mutt"' works fine.
This patch also updates callers.
darcs-hash:20080205031824-f7719-ca5117c1b75f6667459273be2613bc29e8cbbacb.gz
Diffstat (limited to 'XMonad')
-rw-r--r-- | XMonad/Prompt/Man.hs | 2 | ||||
-rw-r--r-- | XMonad/Prompt/Ssh.hs | 2 | ||||
-rw-r--r-- | XMonad/Util/Run.hs | 10 |
3 files changed, 7 insertions, 7 deletions
diff --git a/XMonad/Prompt/Man.hs b/XMonad/Prompt/Man.hs index 71c7dbd..20e282d 100644 --- a/XMonad/Prompt/Man.hs +++ b/XMonad/Prompt/Man.hs @@ -58,7 +58,7 @@ instance XPrompt Man where manPrompt :: XPConfig -> X () manPrompt c = do mans <- io getMans - mkXPrompt Man c (manCompl mans) $ runInTerm . (++) "man " + mkXPrompt Man c (manCompl mans) $ runInTerm "" . (++) "man " getMans :: IO [String] getMans = do diff --git a/XMonad/Prompt/Ssh.hs b/XMonad/Prompt/Ssh.hs index 47ba168..379de4c 100644 --- a/XMonad/Prompt/Ssh.hs +++ b/XMonad/Prompt/Ssh.hs @@ -56,7 +56,7 @@ sshPrompt c = do mkXPrompt Ssh c (mkComplFunFromList sc) ssh ssh :: String -> X () -ssh s = runInTerm ("ssh " ++ s) +ssh s = runInTerm "" ("ssh " ++ s) sshComplList :: IO [String] sshComplList = uniqSort `fmap` liftM2 (++) sshComplListLocal sshComplListGlobal diff --git a/XMonad/Util/Run.hs b/XMonad/Util/Run.hs index face2d8..1f544f2 100644 --- a/XMonad/Util/Run.hs +++ b/XMonad/Util/Run.hs @@ -56,7 +56,7 @@ runProcessWithInput cmd args input = do hPutStr pin input hClose pin output <- hGetContents pout - when (output==output) $ return () + when (output == output) $ return () hClose pout hClose perr waitForProcess ph @@ -112,11 +112,11 @@ unsafeSpawn = spawn -- | Run a given program in the preferred terminal emulator. This uses -- 'safeSpawn'. -safeRunInTerm :: String -> X () -safeRunInTerm command = asks (terminal . config) >>= \t -> safeSpawn t ("-e " ++ command) +safeRunInTerm :: String -> String -> X () +safeRunInTerm options command = asks (terminal . config) >>= \t -> safeSpawn t (options ++ " -e " ++ command) -unsafeRunInTerm, runInTerm :: String -> X () -unsafeRunInTerm command = asks (terminal . config) >>= \t -> unsafeSpawn $ t ++ " -e " ++ command +unsafeRunInTerm, runInTerm :: String -> String -> X () +unsafeRunInTerm options command = asks (terminal . config) >>= \t -> unsafeSpawn $ t ++ " " ++ options ++ " -e " ++ command runInTerm = unsafeRunInTerm -- | Launch an external application and return a 'Handle' to its standard input. |