Copyright | (C) 2007 Andrea Rossato |
---|---|
License | BSD3 |
Maintainer | andrea.rossato@unibz.it |
Stability | unstable |
Portability | unportable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
A shell prompt for XMonad
Synopsis
- data Shell = Shell
- shellPrompt :: XPConfig -> X ()
- safePrompt :: FilePath -> XPConfig -> X ()
- safeDirPrompt :: FilePath -> XPConfig -> String -> X ()
- unsafePrompt :: FilePath -> XPConfig -> X ()
- prompt :: FilePath -> XPConfig -> X ()
- compgenDirectories :: ComplCaseSensitivity -> String -> IO String
- compgenFiles :: ComplCaseSensitivity -> String -> IO String
- getCommands :: IO [String]
- getBrowser :: IO String
- getEditor :: IO String
- getShellCompl :: [String] -> Predicate -> String -> IO [String]
- getShellCompl' :: ComplCaseSensitivity -> [String] -> Predicate -> String -> IO [String]
- split :: Eq a => a -> [a] -> [[a]]
Usage
- In your
xmonad.hs
:
import XMonad.Prompt import XMonad.Prompt.Shell
- In your keybindings add something like:
, ((modm .|. controlMask, xK_x), shellPrompt def)
For detailed instruction on editing the key binding see the tutorial.
Instances
XPrompt Shell Source # | |
Defined in XMonad.Prompt.Shell showXPrompt :: Shell -> String Source # nextCompletion :: Shell -> String -> [String] -> String Source # commandToComplete :: Shell -> String -> String Source # completionToCommand :: Shell -> String -> String Source # |
shellPrompt :: XPConfig -> X () Source #
Variations on shellPrompt
See safe and unsafeSpawn in XMonad.Util.Run. prompt is an alias for unsafePrompt; safePrompt and unsafePrompt work on the same principles, but will use XPrompt to interactively query the user for input; the appearance is set by passing an XPConfig as the second argument. The first argument is the program to be run with the interactive input. You would use these like this:
, ((modm, xK_b), safePrompt "firefox" greenXPConfig) , ((modm .|. shiftMask, xK_c), prompt ("xterm" ++ " -e") greenXPConfig)
Note that you want to use safePrompt for Firefox input, as Firefox
wants URLs, and unsafePrompt for the XTerm example because this allows
you to easily start a terminal executing an arbitrary command, like
top
.
:: FilePath | The command to execute |
-> XPConfig | The prompt configuration |
-> String | Which string to start |
-> X () |
Like safePrompt
, but optimized for the use-case of a program that
needs a file as an argument.
For example, a prompt for dragon that always starts searching in your home directory would look like
safeDirPrompt "dragon" def "~/"
This is especially useful when using something like
fuzzyMatch
from XMonad.Prompt.FuzzyMatch as
your prompt's searchPredicate
.
Utility functions
compgenDirectories :: ComplCaseSensitivity -> String -> IO String Source #
compgenFiles :: ComplCaseSensitivity -> String -> IO String Source #
getCommands :: IO [String] Source #
getBrowser :: IO String Source #
Ask the shell what browser the user likes. If the user hasn't defined any
$BROWSER, defaults to returning "firefox", since that seems to be the most
common X web browser.
Note that if you don't specify a GUI browser but a textual one, that'll be a problem
as getBrowser
will be called by functions expecting to be able to just execute the string
or pass it to a shell; so in that case, define $BROWSER as something like "xterm -e elinks"
or as the name of a shell script doing much the same thing.
getEditor :: IO String Source #
Like getBrowser
, but should be of a text editor. This gets the $EDITOR variable, defaulting to "emacs".
getShellCompl' :: ComplCaseSensitivity -> [String] -> Predicate -> String -> IO [String] Source #