aboutsummaryrefslogtreecommitdiffstats
path: root/XMonad/Actions/Promote.hs
diff options
context:
space:
mode:
Diffstat (limited to 'XMonad/Actions/Promote.hs')
-rw-r--r--XMonad/Actions/Promote.hs49
1 files changed, 49 insertions, 0 deletions
diff --git a/XMonad/Actions/Promote.hs b/XMonad/Actions/Promote.hs
new file mode 100644
index 0000000..0d270d3
--- /dev/null
+++ b/XMonad/Actions/Promote.hs
@@ -0,0 +1,49 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module : XMonad.Actions.Promote
+-- Copyright : (c) Miikka Koskinen 2007
+-- License : BSD3-style (see LICENSE)
+--
+-- Maintainer : xmonad@s001.ethrael.com
+-- Stability : unstable
+-- Portability : unportable
+--
+-- Alternate promote function for xmonad.
+--
+-- Moves the focused window to the master pane. All other windows
+-- retain their order. If focus is in the master, swap it with the
+-- next window in the stack. Focus stays in the master.
+--
+-----------------------------------------------------------------------------
+
+module XMonad.Actions.Promote (
+ -- * Usage
+ -- $usage
+ promote
+ ) where
+
+import XMonad
+import XMonad.StackSet
+
+-- $usage
+--
+-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
+--
+-- > import XMonad.Actions.Promote
+--
+-- then add a keybinding or substitute 'promote' in place of swapMaster:
+--
+-- > , ((modMask x, xK_Return), promote)
+--
+-- For detailed instructions on editing your key bindings, see
+-- "XMonad.Doc.Extending#Editing_key_bindings".
+
+-- | Move the focused window to the master pane. All other windows
+-- retain their order. If focus is in the master, swap it with the
+-- next windo in the stack. Focus stays in the master.
+promote :: X ()
+promote = windows $ modify' $
+ \c -> case c of
+ Stack _ [] [] -> c
+ Stack t [] (x:rs) -> Stack x [] (t:rs)
+ Stack t ls rs -> Stack t [] (reverse ls ++ rs)