diff options
Diffstat (limited to 'SshPrompt.hs')
-rw-r--r-- | SshPrompt.hs | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/SshPrompt.hs b/SshPrompt.hs deleted file mode 100644 index 64dd5ef..0000000 --- a/SshPrompt.hs +++ /dev/null @@ -1,104 +0,0 @@ ------------------------------------------------------------------------------ --- | --- Module : XMonadContrib.SshPrompt --- Copyright : (C) 2007 Andrea Rossato --- License : BSD3 --- --- Maintainer : andrea.rossato@unibz.it --- Stability : unstable --- Portability : unportable --- --- A ssh prompt for XMonad --- ------------------------------------------------------------------------------ - -module XMonadContrib.SshPrompt ( - -- * Usage - -- $usage - sshPrompt - ) where - -import XMonad -import XMonadContrib.Run -import XMonadContrib.XPrompt - -import System.Directory -import System.Environment - -import Control.Monad -import Data.List -import Data.Maybe - --- $usage --- 1. In Config.hs add: --- --- > import XMonadContrib.XPrompt --- > import XMonadContrib.SshPrompt --- --- 2. In your keybindings add something like: --- --- > , ((modMask .|. controlMask, xK_s), sshPrompt defaultXPConfig) --- - --- %import XMonadContrib.XPrompt --- %import XMonadContrib.SshPrompt --- %keybind , ((modMask .|. controlMask, xK_s), sshPrompt defaultXPConfig) - -data Ssh = Ssh - -instance XPrompt Ssh where - showXPrompt Ssh = "SSH to: " - -sshPrompt :: XPConfig -> X () -sshPrompt c = do - sc <- io $ sshComplList - mkXPrompt Ssh c (mkComplFunFromList sc) ssh - -ssh :: String -> X () -ssh s = runInTerm ("ssh " ++ s) - -sshComplList :: IO [String] -sshComplList = uniqSort `fmap` liftM2 (++) sshComplListLocal sshComplListGlobal - -sshComplListLocal :: IO [String] -sshComplListLocal = do - h <- getEnv "HOME" - sshComplListFile $ h ++ "/.ssh/known_hosts" - -sshComplListGlobal :: IO [String] -sshComplListGlobal = do - env <- getEnv "SSH_KNOWN_HOSTS" `catch` (\_ -> return "/nonexistent") - fs <- mapM fileExists [ env - , "/usr/local/etc/ssh/ssh_known_hosts" - , "/usr/local/etc/ssh_known_hosts" - , "/etc/ssh/ssh_known_hosts" - , "/etc/ssh_known_hosts" - ] - case catMaybes fs of - [] -> return [] - (f:_) -> sshComplListFile' f - -sshComplListFile :: String -> IO [String] -sshComplListFile kh = do - f <- doesFileExist kh - if f then sshComplListFile' kh - else return [] - -sshComplListFile' :: String -> IO [String] -sshComplListFile' kh = do - l <- readFile kh - return $ map (takeWhile (/= ',') . concat . take 1 . words) - $ filter nonComment - $ lines l - -fileExists :: String -> IO (Maybe String) -fileExists kh = do - f <- doesFileExist kh - if f then return $ Just kh - else return Nothing - -nonComment :: String -> Bool -nonComment [] = False -nonComment ('#':_) = False -nonComment ('|':_) = False -- hashed, undecodeable -nonComment _ = True |