summaryrefslogtreecommitdiffstats
path: root/Config.hs
diff options
context:
space:
mode:
authorDon Stewart <dons@cse.unsw.edu.au>2007-04-11 08:04:56 +0200
committerDon Stewart <dons@cse.unsw.edu.au>2007-04-11 08:04:56 +0200
commit7a3835caf1bd5cea6cd10900068f266058cb12ea (patch)
treed8a673ad188b64ab6481f6a78cf934f87d61bcce /Config.hs
parent14d62be4ec0bbdbc8d44dd5f606b5b7018f9149f (diff)
downloadmetatile-7a3835caf1bd5cea6cd10900068f266058cb12ea.tar
metatile-7a3835caf1bd5cea6cd10900068f266058cb12ea.zip
Statically distinguish Workspace and Screen indices
darcs-hash:20070411060456-9c5c1-a5642813cffe434e60310d21497217ef3704b296
Diffstat (limited to 'Config.hs')
-rw-r--r--Config.hs131
1 files changed, 65 insertions, 66 deletions
diff --git a/Config.hs b/Config.hs
index 9b2d2f5..ab92814 100644
--- a/Config.hs
+++ b/Config.hs
@@ -1,70 +1,69 @@
module Config where
-{-
-xmonad bindings follow mostly the dwm/wmii conventions:
-
- key combination action
-
- mod-shift-return new xterm
- mod-p launch dmenu
- mod-shift-p launch gmrun
-
- mod-space switch tiling mode
-
- mod-tab raise next window in stack
- mod-j
- mod-k
-
- mod-h resize currently focused window
- mod-l
-
- mod-shift-c kill client
- mod-shift-q exit window manager
- mod-shift-ctrl-q restart window manager
-
- mod-return move currently focused window into master position
-
- mod-1..9 switch to workspace N
- mod-shift-1..9 move client to workspace N
-
- mod-w,e,r switch to physical/Xinerama screen 1, 2 or 3.
-
-xmonad places each window into a "workspace." Each workspace can have
-any number of windows, which you can cycle though with mod-j and mod-k.
-Windows are either displayed full screen, tiled horizontally, or tiled
-vertically. You can toggle the layout mode with mod-space, which will
-cycle through the available modes.
-
-You can switch to workspace N with mod-N. For example, to switch to
-workspace 5, you would press mod-5. Similarly, you can move the current
-window to another workspace with mod-shift-N.
-
-When running with multiple monitors (Xinerama), each screen has exactly
-1 workspace visible. When xmonad starts, workspace 1 is on screen 1,
-workspace 2 is on screen 2, etc. If you switch to a workspace which is
-currently visible on another screen, xmonad simply switches focus to
-that screen. If you switch to a workspace which is *not* visible, xmonad
-replaces the workspace on the *current* screen with the workspace you
-selected.
-
-For example, if you have the following configuration:
-
-Screen 1: Workspace 2
-Screen 2: Workspace 5 (current workspace)
-
-and you wanted to view workspace 7 on screen 1, you would press:
-
-mod-2 (to select workspace 2, and make screen 1 the current screen)
-mod-7 (to select workspace 7)
-
-Since switching to the workspace currently visible on a given screen is
-such a common operation, shortcuts are provided: mod-{w,e,r} switch to
-the workspace currently visible on screens 1, 2, and 3 respectively.
-Likewise, shift-mod-{w,e,r} moves the current window to the workspace on
-that screen. Using these keys, the above example would become mod-w
-mod-7.
-
--}
+--
+-- xmonad bindings follow mostly the dwm/wmii conventions:
+--
+-- key combination action
+--
+-- mod-shift-return new xterm
+-- mod-p launch dmenu
+-- mod-shift-p launch gmrun
+--
+-- mod-space switch tiling mode
+--
+-- mod-tab raise next window in stack
+-- mod-j
+-- mod-k
+--
+-- mod-h resize currently focused window
+-- mod-l
+--
+-- mod-shift-c kill client
+-- mod-shift-q exit window manager
+-- mod-shift-ctrl-q restart window manager
+--
+-- mod-return move currently focused window into master position
+--
+-- mod-1..9 switch to workspace N
+-- mod-shift-1..9 move client to workspace N
+--
+-- mod-w,e,r switch to physical/Xinerama screen 1, 2 or 3.
+--
+-- xmonad places each window into a "workspace." Each workspace can have
+-- any number of windows, which you can cycle though with mod-j and mod-k.
+-- Windows are either displayed full screen, tiled horizontally, or tiled
+-- vertically. You can toggle the layout mode with mod-space, which will
+-- cycle through the available modes.
+--
+-- You can switch to workspace N with mod-N. For example, to switch to
+-- workspace 5, you would press mod-5. Similarly, you can move the current
+-- window to another workspace with mod-shift-N.
+--
+-- When running with multiple monitors (Xinerama), each screen has exactly
+-- 1 workspace visible. When xmonad starts, workspace 1 is on screen 1,
+-- workspace 2 is on screen 2, etc. If you switch to a workspace which is
+-- currently visible on another screen, xmonad simply switches focus to
+-- that screen. If you switch to a workspace which is *not* visible, xmonad
+-- replaces the workspace on the *current* screen with the workspace you
+-- selected.
+--
+-- For example, if you have the following configuration:
+--
+-- Screen 1: Workspace 2
+-- Screen 2: Workspace 5 (current workspace)
+--
+-- and you wanted to view workspace 7 on screen 1, you would press:
+--
+-- mod-2 (to select workspace 2, and make screen 1 the current screen)
+-- mod-7 (to select workspace 7)
+--
+-- Since switching to the workspace currently visible on a given screen is
+-- such a common operation, shortcuts are provided: mod-{w,e,r} switch to
+-- the workspace currently visible on screens 1, 2, and 3 respectively.
+-- Likewise, shift-mod-{w,e,r} moves the current window to the workspace on
+-- that screen. Using these keys, the above example would become mod-w
+-- mod-7.
+--
import Data.Ratio
import Data.Bits
@@ -129,7 +128,7 @@ keys = M.fromList $
] ++
-- Keybindings to get to each workspace:
- [((m .|. modMask, xK_0 + fromIntegral i), f i)
+ [((m .|. modMask, xK_0 + fromIntegral i), f (fromIntegral (pred i))) -- index from 0.
| i <- [1 .. workspaces]
, (f, m) <- [(view, 0), (tag, shiftMask)]]