aboutsummaryrefslogtreecommitdiffstats
path: root/SshPrompt.hs
diff options
context:
space:
mode:
authorSpencer Janssen <sjanssen@cse.unl.edu>2007-11-01 21:10:59 +0100
committerSpencer Janssen <sjanssen@cse.unl.edu>2007-11-01 21:10:59 +0100
commit4866f2e367dfcf22a9591231ba40948826a1b438 (patch)
tree7a245caee3f146826b267d773b7eaa80386a818e /SshPrompt.hs
parent47589e1913fb9530481caedb543978a30d4323ea (diff)
downloadXMonadContrib-4866f2e367dfcf22a9591231ba40948826a1b438.tar.gz
XMonadContrib-4866f2e367dfcf22a9591231ba40948826a1b438.tar.xz
XMonadContrib-4866f2e367dfcf22a9591231ba40948826a1b438.zip
Hierarchify
darcs-hash:20071101201059-a5988-fc1f1262bec1b69e13ba18ae7cefeafc8c4471d4.gz
Diffstat (limited to 'SshPrompt.hs')
-rw-r--r--SshPrompt.hs104
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