From 29a89bf278b310b9364bed850a1f169d0a61df00 Mon Sep 17 00:00:00 2001 From: Karsten Schoelzel Date: Wed, 25 Jul 2007 22:33:05 +0200 Subject: FocusNth initial import darcs-hash:20070725203305-eb3a1-240d890082c4a8531a139e3cb26073b15f20954c.gz --- FocusNth.hs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 FocusNth.hs diff --git a/FocusNth.hs b/FocusNth.hs new file mode 100644 index 0000000..f697c75 --- /dev/null +++ b/FocusNth.hs @@ -0,0 +1,42 @@ +----------------------------------------------------------------------------- +-- | +-- Module : XMonadContrib.FocusNth +-- Copyright : (c) Karsten Schoelzel +-- License : BSD +-- +-- Maintainer : Karsten Schoelzel +-- Stability : unstable +-- Portability : unportable +-- +-- Focus the n'th window on the screen. +----------------------------------------------------------------------------- + +module XMonadContrib.FocusNth ( + -- * Usage + -- $usage + focusNth) where + +import StackSet +import Operations +import XMonad + +-- $usage +-- > import XMonadContrib.FocusNth + +-- > -- mod4-[1..9] @@ Switch to window N +-- > ++ [((mod4Mask, k), focusNth i) +-- > | (i, k) <- zip [0 .. 8] [xK_1 ..]] + +focusNth :: Int -> X () +focusNth = windows . modify' . focusNth' + +focusNth' :: Int -> Stack a -> Stack a +focusNth' n s@(Stack _ ls rs) | (n < 0) || (n > length(ls) + length(rs)) = s + | otherwise = listToStack n (integrate s) + +listToStack :: Int -> [a] -> Stack a +listToStack n l = Stack t ls rs + where (t:rs) = drop n l + ls = reverse (take n l) + + -- cgit v1.2.3