xmonad-contrib-0.18.1.9: Community-maintained extensions for xmonad
Copyright(C) 2007 Andrea Rossato Matthew Sackman
LicenseBSD3
MaintainerGwern Branwen <gwern0@gmail.com>
Stabilityunstable
Portabilityunportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

XMonad.Util.XSelection

Contents

Description

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>
Synopsis

Usage

Add import XMonad.Util.XSelection to the top of Config.hs

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")

To add a paste keybinding in your prompts, use:

prompt_extra_bindings = [
  ((mod1Mask, xK_v), getClipboard >>= insertString) -- Alt+v to paste
  ]

prompt_conf = def {
  promptKeymap =
    foldl (\m (k, a) -> M.insert k a m) defaultXPKeymap prompt_extra_bindings,
  -- other prompt config
}

Next use it to construct a prompt, for example in your bindings:

("M-p", shellPrompt prompt_conf),

Future improvements for XSelection:

WARNING: these functions are fundamentally implemented incorrectly and may, among other possible failure modes, deadlock or crash. For details, see http://code.google.com/p/xmonad/issues/detail?id=573. (These errors are generally very rare in practice, but still exist.)

getSelection :: MonadIO m => m String Source #

Returns a String corresponding to the current mouse selection in X; if there is none, an empty string is returned.

getClipboard :: MonadIO m => m String Source #

Returns a String corresponding to the current clipboard in X; if there is none, an empty string is returned.

getSecondarySelection :: MonadIO m => m String Source #

Returns a String corresponding to the secondary 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 ++""".