Portability | unportable |
---|---|
Stability | unstable |
Maintainer | Gwern Branwen <gwern0@gmail.com> |
Safe Haskell | None |
A module for accessing and manipulating X Window's mouse selection (the buffer used in copy and pasting).
getSelection
is an adaptation of Hxsel.hs and Hxput.hs from the XMonad-utils, available:
$ darcs get <http://gorgias.mine.nu/repos/xmonad-utils>
- getSelection :: MonadIO m => m String
- promptSelection :: String -> X ()
- safePromptSelection :: String -> X ()
- transformPromptSelection :: (String -> String) -> String -> X ()
- transformSafePromptSelection :: (String -> String) -> String -> X ()
Usage
Add import XMonad.Util.XSelection
to the top of Config.hs
Then make use of getSelection or promptSelection as needed; if
one wanted to run Firefox with the selection as an argument (perhaps
the selection string is an URL you just highlighted), then one could add
to the xmonad.hs a line like thus:
, ((modm .|. shiftMask, xK_b), promptSelection "firefox")
Future improvements for XSelection:
- More elaborate functionality: Emacs' registers are nice; if you don't know what they are, see http://www.gnu.org/software/emacs/manual/html_node/emacs/Registers.html#Registers
getSelection :: MonadIO m => m StringSource
Returns a String corresponding to the current mouse selection in X; if there is none, an empty string is returned.
promptSelection :: String -> X ()Source
A wrapper around getSelection
. Makes it convenient to run a program with the current selection as an argument.
This is convenient for handling URLs, in particular. For example, in your Config.hs you could bind a key to
promptSelection "firefox"
;
this would allow you to highlight a URL string and then immediately open it up in Firefox.
promptSelection
passes strings through the system shell, /bin/sh; if you do not wish your selected text
to be interpreted or mangled by the shell, use safePromptSelection
. safePromptSelection will bypass the
shell using safeSpawn
from XMonad.Util.Run; see its documentation for more
details on the advantages and disadvantages of using safeSpawn.
safePromptSelection :: String -> X ()Source
A wrapper around getSelection
. Makes it convenient to run a program with the current selection as an argument.
This is convenient for handling URLs, in particular. For example, in your Config.hs you could bind a key to
promptSelection "firefox"
;
this would allow you to highlight a URL string and then immediately open it up in Firefox.
promptSelection
passes strings through the system shell, /bin/sh; if you do not wish your selected text
to be interpreted or mangled by the shell, use safePromptSelection
. safePromptSelection will bypass the
shell using safeSpawn
from XMonad.Util.Run; see its documentation for more
details on the advantages and disadvantages of using safeSpawn.
transformPromptSelection :: (String -> String) -> String -> X ()Source
A wrapper around promptSelection
and its safe variant. They take two parameters, the
first is a function that transforms strings, and the second is the application to run.
The transformer essentially transforms the selection in X.
One example is to wrap code, such as a command line action copied out of the browser
to be run as sudo ++ cmd
or su - -c "++ cmd ++"
.
transformSafePromptSelection :: (String -> String) -> String -> X ()Source
A wrapper around promptSelection
and its safe variant. They take two parameters, the
first is a function that transforms strings, and the second is the application to run.
The transformer essentially transforms the selection in X.
One example is to wrap code, such as a command line action copied out of the browser
to be run as sudo ++ cmd
or su - -c "++ cmd ++"
.