packages feed

xmonad 0.9.1 → 0.9.2

raw patch · 10 files changed

+427/−406 lines, 10 filesdep +extensible-exceptionsdep ~X11dep ~basenew-uploader

Dependencies added: extensible-exceptions

Dependency ranges changed: X11, base

Files

Main.hs view
@@ -17,7 +17,6 @@ import XMonad  import Control.Monad (unless)-import System.IO import System.Info import System.Environment import System.Posix.Process (executeFile)
XMonad/Core.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE ExistentialQuantification, FlexibleInstances, GeneralizedNewtypeDeriving,-             MultiParamTypeClasses, TypeSynonymInstances, CPP #-}+             MultiParamTypeClasses, TypeSynonymInstances, CPP, DeriveDataTypeable #-} -- required for deriving Typeable-{-# OPTIONS_GHC -fglasgow-exts #-}+{- # OPTIONS_GHC -fglasgow-exts #-}  ----------------------------------------------------------------------------- -- |@@ -33,7 +33,7 @@ import XMonad.StackSet hiding (modify)  import Prelude hiding ( catch )-import Control.Exception (catch, try, bracket, throw, finally, Exception(ExitException))+import Control.Exception.Extensible (catch, fromException, try, bracket, throw, finally, SomeException(..)) import Control.Applicative import Control.Monad.State import Control.Monad.Reader@@ -165,9 +165,9 @@ catchX job errcase = do     st <- get     c <- ask-    (a, s') <- io $ runX c st job `catch` \e -> case e of-                            ExitException {} -> throw e-                            _ -> do hPrint stderr e; runX c st errcase+    (a, s') <- io $ runX c st job `catch` \e -> case fromException e of+                        Just x -> throw e `const` (x `asTypeOf` ExitSuccess)+                        _ -> do hPrint stderr e; runX c st errcase     put s'     return a @@ -353,7 +353,7 @@ -- | Lift an 'IO' action into the 'X' monad.  If the action results in an 'IO' -- exception, log the exception to stderr and continue normal execution. catchIO :: MonadIO m => IO () -> m ()-catchIO f = io (f `catch` \e -> hPrint stderr e >> hFlush stderr)+catchIO f = io (f `catch` \(SomeException e) -> hPrint stderr e >> hFlush stderr)  -- | spawn. Launch an external application. Specifically, it double-forks and -- runs the 'String' you pass as a command to /bin/sh.@@ -439,11 +439,11 @@             return ()         return (status == ExitSuccess)       else return True- where getModTime f = catch (Just <$> getModificationTime f) (const $ return Nothing)+ where getModTime f = catch (Just <$> getModificationTime f) (\(SomeException _) -> return Nothing)        isSource = flip elem [".hs",".lhs",".hsc"]        allFiles t = do             let prep = map (t</>) . Prelude.filter (`notElem` [".",".."])-            cs <- prep <$> catch (getDirectoryContents t) (\_ -> return [])+            cs <- prep <$> catch (getDirectoryContents t) (\(SomeException _) -> return [])             ds <- filterM doesDirectoryExist cs             concat . ((cs \\ ds):) <$> mapM allFiles ds @@ -466,7 +466,8 @@ installSignalHandlers = io $ do     installHandler openEndedPipe Ignore Nothing     installHandler sigCHLD Ignore Nothing-    try $ fix $ \more -> do+    (try :: IO a -> IO (Either SomeException a))+      $ fix $ \more -> do         x <- getAnyProcessStatus False False         when (isJust x) more     return ()
XMonad/Layout.hs view
@@ -1,5 +1,5 @@-{-# OPTIONS_GHC -fglasgow-exts    #-} -- For deriving Data/Typeable-{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, PatternGuards, TypeSynonymInstances #-}+{- # OPTIONS_GHC -fglasgow-exts    #-} -- For deriving Data/Typeable+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, PatternGuards, TypeSynonymInstances, DeriveDataTypeable #-}  -- -------------------------------------------------------------------------- -- |
XMonad/ManageHook.hs view
@@ -22,7 +22,7 @@ import XMonad.Core import Graphics.X11.Xlib.Extras import Graphics.X11.Xlib (Display, Window, internAtom, wM_NAME)-import Control.Exception (bracket, catch)+import Control.Exception (bracket, catch, SomeException(..)) import Control.Monad.Reader import Data.Maybe import Data.Monoid@@ -72,10 +72,10 @@     let         getProp =             (internAtom d "_NET_WM_NAME" False >>= getTextProperty d w)-                `catch` \_ -> getTextProperty d w wM_NAME+                `catch` \(SomeException _) -> getTextProperty d w wM_NAME         extract prop = do l <- wcTextPropertyToTextList d prop                           return $ if null l then "" else head l-    io $ bracket getProp (xFree . tp_value) extract `catch` \_ -> return ""+    io $ bracket getProp (xFree . tp_value) extract `catch` \(SomeException _) -> return ""  -- | Return the application name. appName :: Query String
XMonad/Operations.hs view
@@ -1,7 +1,7 @@ {-# OPTIONS_GHC -fno-warn-orphans #-}-{-# OPTIONS_GHC -fglasgow-exts    #-} -- For deriving Data/Typeable-{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, PatternGuards, TypeSynonymInstances #-}+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, PatternGuards, TypeSynonymInstances, DeriveDataTypeable #-} +{- # OPTIONS_GHC -fglasgow-exts    #-} -- For deriving Data/Typeable -- -------------------------------------------------------------------------- -- | -- Module      :  XMonad.Operations@@ -33,9 +33,8 @@ import Control.Applicative import Control.Monad.Reader import Control.Monad.State-import qualified Control.Exception as C+import qualified Control.Exception.Extensible as C -import System.IO import System.Posix.Process (executeFile) import Graphics.X11.Xlib import Graphics.X11.Xinerama (getScreenInfo)@@ -400,7 +399,7 @@  -- | Get the 'Pixel' value for a named color initColor :: Display -> String -> IO (Maybe Pixel)-initColor dpy c = C.handle (\_ -> return Nothing) $+initColor dpy c = C.handle (\(C.SomeException _) -> return Nothing) $     (Just . color_pixel . fst) <$> allocNamedColor dpy colormap c     where colormap = defaultColormap dpy (defaultScreen dpy) 
man/xmonad.1 view
@@ -1,4 +1,5 @@-.TH xmonad 1 "25 October 09" xmonad-0.9.1 "xmonad manual".SH Name+.TH xmonad 1 "21 December 10" xmonad-0.9.2 "xmonad manual".TH  "" "" +.SH Name .PP xmonad - a tiling window manager .SH Description@@ -233,10 +234,12 @@ .PP To use xmonad as your window manager add to your \f[I]~/.xinitrc\f[] file:-.PP-\f[CR]-      exec\ xmonad+.IP+.nf+\f[C]+exec\ xmonad \f[]+.fi .SH Customization .PP xmonad is customized in ~/.xmonad/xmonad.hs, and then restarting@@ -252,11 +255,13 @@ searchpath. Hierarchical modules are supported: for example, the file \f[I]~/.xmonad/lib/XMonad/Stack/MyAdditions.hs\f[] could contain:-.PP-\f[CR]-      module\ XMonad.Stack.MyAdditions\ (function1)\ where-      \ \ \ \ function1\ =\ error\ "function1:\ Not\ implemented\ yet!"+.IP+.nf+\f[C]+module\ XMonad.Stack.MyAdditions\ (function1)\ where+\ \ \ \ function1\ =\ error\ "function1:\ Not\ implemented\ yet!" \f[]+.fi .PP Your xmonad.hs may then import XMonad.Stack.MyAdditions as if that module was contained within xmonad or xmonad-contrib.
man/xmonad.1.html view
@@ -1,383 +1,384 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">-<html xmlns="http://www.w3.org/1999/xhtml"-><head-  ><title-    ></title-    ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"-     /><meta name="generator" content="pandoc"-     /><h1>xmonad-0.9.1</h1><p>Section: xmonad manual (1)<br>Updated: 25 October 09</p><hr></head-  ><body-  ><div id="TOC"-    ><ul+<html xmlns="http://www.w3.org/1999/xhtml">+<head>+  <title></title>+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+  <meta name="generator" content="pandoc" />+</head>+<body>+<h1>xmonad-0.9.2</h1><p>Section: xmonad manual (1)<br/>Updated: 21 December 10</p><hr/>+<div id="TOC"+><ul+  ><li+    ><a href="#name"+      >Name</a+      ></li+    ><li+    ><a href="#description"+      >Description</a+      ></li+    ><li+    ><a href="#usage"+      >Usage</a+      ><ul       ><li-	><a href="#name"-	  >Name</a-	  ></li-	><li-	><a href="#description"-	  >Description</a-	  ></li-	><li-	><a href="#usage"-	  >Usage</a-	  ><ul-	  ><li-	    ><a href="#flags"-	      >Flags</a-	      ></li-	    ><li-	    ><a href="#default-keyboard-bindings"-	      >Default keyboard bindings</a-	      ></li-	    ></ul-	  ></li-	><li-	><a href="#examples"-	  >Examples</a+	><a href="#flags"+	  >Flags</a 	  ></li 	><li-	><a href="#customization"-	  >Customization</a-	  ><ul-	  ><li-	    ><a href="#modular-configuration"-	      >Modular Configuration</a-	      ></li-	    ></ul+	><a href="#default-keyboard-bindings"+	  >Default keyboard bindings</a 	  ></li-	><li-	><a href="#bugs"-	  >Bugs</a+	></ul+      ></li+    ><li+    ><a href="#examples"+      >Examples</a+      ></li+    ><li+    ><a href="#customization"+      >Customization</a+      ><ul+      ><li+	><a href="#modular-configuration"+	  >Modular Configuration</a 	  ></li 	></ul-      ></div-    ><div id="name"-    ><h1-      ><a href="#TOC"-	>Name</a-	></h1+      ></li+    ><li+    ><a href="#bugs"+      >Bugs</a+      ></li+    ></ul+  ></div+>+<div id="name"+><h1+  ><a href="#TOC"+    >Name</a+    ></h1+  ><p+  >xmonad - a tiling window manager</p+  ></div+><div id="description"+><h1+  ><a href="#TOC"+    >Description</a+    ></h1+  ><p+  ><em+    >xmonad</em+    > is a minimalist tiling window manager for X, written in Haskell. Windows are managed using automatic layout algorithms, which can be dynamically reconfigured. At any time windows are arranged so as to maximize the use of screen real estate. All features of the window manager are accessible purely from the keyboard: a mouse is entirely optional. <em+    >xmonad</em+    > is configured in Haskell, and custom layout algorithms may be implemented by the user in config files. A principle of <em+    >xmonad</em+    > is predictability: the user should know in advance precisely the window arrangement that will result from any action.</p+  ><p+  >By default, <em+    >xmonad</em+    > provides three layout algorithms: tall, wide and fullscreen. In tall or wide mode, windows are tiled and arranged to prevent overlap and maximize screen use. Sets of windows are grouped together on virtual screens, and each screen retains its own layout, which may be reconfigured dynamically. Multiple physical monitors are supported via Xinerama, allowing simultaneous display of a number of screens.</p+  ><p+  >By utilizing the expressivity of a modern functional language with a rich static type system, <em+    >xmonad</em+    > provides a complete, featureful window manager in less than 1200 lines of code, with an emphasis on correctness and robustness. Internal properties of the window manager are checked using a combination of static guarantees provided by the type system, and type-based automated testing. A benefit of this is that the code is simple to understand, and easy to modify.</p+  ></div+><div id="usage"+><h1+  ><a href="#TOC"+    >Usage</a+    ></h1+  ><p+  ><em+    >xmonad</em+    > places each window into a &quot;workspace&quot;. 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.</p+  ><p+  >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.</p+  ><p+  >When running with multiple monitors (Xinerama), each screen has exactly 1 workspace visible. mod-{w,e,r} switch the focus between screens, while shift-mod-{w,e,r} move the current window to that screen. When <em+    >xmonad</em+    > starts, workspace 1 is on screen 1, workspace 2 is on screen 2, etc. When switching workspaces to one that is already visible, the current and visible workspaces are swapped.</p+  ><div id="flags"+  ><h2+    ><a href="#TOC"+      >Flags</a+      ></h2+    ><p+    >xmonad has several flags which you may pass to the executable. These flags are:</p+    ><dl+    ><dt+      >--recompile</dt+      ><dd       ><p-      >xmonad - a tiling window manager</p-      ></div-    ><div id="description"-    ><h1-      ><a href="#TOC"-	>Description</a-	></h1+	>Recompiles your configuration in <em+	  >~/.xmonad/xmonad.hs</em+	  ></p+	></dd+      ><dt+      >--restart</dt+      ><dd       ><p-      ><em-	>xmonad</em-	> is a minimalist tiling window manager for X, written in Haskell. Windows are managed using automatic layout algorithms, which can be dynamically reconfigured. At any time windows are arranged so as to maximize the use of screen real estate. All features of the window manager are accessible purely from the keyboard: a mouse is entirely optional. <em-	>xmonad</em-	> is configured in Haskell, and custom layout algorithms may be implemented by the user in config files. A principle of <em-	>xmonad</em-	> is predictability: the user should know in advance precisely the window arrangement that will result from any action.</p+	>Causes the currently running <em+	  >xmonad</em+	  > process to restart</p+	></dd+      ><dt+      >--version</dt+      ><dd       ><p-      >By default, <em-	>xmonad</em-	> provides three layout algorithms: tall, wide and fullscreen. In tall or wide mode, windows are tiled and arranged to prevent overlap and maximize screen use. Sets of windows are grouped together on virtual screens, and each screen retains its own layout, which may be reconfigured dynamically. Multiple physical monitors are supported via Xinerama, allowing simultaneous display of a number of screens.</p+	>Display version of <em+	  >xmonad</em+	  ></p+	></dd+      ></dl+    ></div+  ><div id="default-keyboard-bindings"+  ><h2+    ><a href="#TOC"+      >Default keyboard bindings</a+      ></h2+    ><dl+    ><dt+      >mod-shift-return</dt+      ><dd       ><p-      >By utilizing the expressivity of a modern functional language with a rich static type system, <em-	>xmonad</em-	> provides a complete, featureful window manager in less than 1200 lines of code, with an emphasis on correctness and robustness. Internal properties of the window manager are checked using a combination of static guarantees provided by the type system, and type-based automated testing. A benefit of this is that the code is simple to understand, and easy to modify.</p-      ></div-    ><div id="usage"-    ><h1-      ><a href="#TOC"-	>Usage</a-	></h1+	>Launch terminal</p+	></dd+      ><dt+      >mod-p</dt+      ><dd       ><p-      ><em-	>xmonad</em-	> places each window into a &quot;workspace&quot;. 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.</p+	>Launch dmenu</p+	></dd+      ><dt+      >mod-shift-p</dt+      ><dd       ><p-      >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.</p+	>Launch gmrun</p+	></dd+      ><dt+      >mod-shift-c</dt+      ><dd       ><p-      >When running with multiple monitors (Xinerama), each screen has exactly 1 workspace visible. mod-{w,e,r} switch the focus between screens, while shift-mod-{w,e,r} move the current window to that screen. When <em-	>xmonad</em-	> starts, workspace 1 is on screen 1, workspace 2 is on screen 2, etc. When switching workspaces to one that is already visible, the current and visible workspaces are swapped.</p-      ><div id="flags"-      ><h2-	><a href="#TOC"-	  >Flags</a-	  ></h2-	><p-	>xmonad has several flags which you may pass to the executable. These flags are:</p-	><dl-	><dt-	  >--recompile</dt-	  ><dd-	  ><p-	    >Recompiles your configuration in <em-	      >~/.xmonad/xmonad.hs</em-	      ></p-	    ></dd-	  ><dt-	  >--restart</dt-	  ><dd-	  ><p-	    >Causes the currently running <em-	      >xmonad</em-	      > process to restart</p-	    ></dd-	  ><dt-	  >--version</dt-	  ><dd-	  ><p-	    >Display version of <em-	      >xmonad</em-	      ></p-	    ></dd-	  ></dl-	></div-      ><div id="default-keyboard-bindings"-      ><h2-	><a href="#TOC"-	  >Default keyboard bindings</a-	  ></h2-	><dl-	><dt-	  >mod-shift-return</dt-	  ><dd-	  ><p-	    >Launch terminal</p-	    ></dd-	  ><dt-	  >mod-p</dt-	  ><dd-	  ><p-	    >Launch dmenu</p-	    ></dd-	  ><dt-	  >mod-shift-p</dt-	  ><dd-	  ><p-	    >Launch gmrun</p-	    ></dd-	  ><dt-	  >mod-shift-c</dt-	  ><dd-	  ><p-	    >Close the focused window</p-	    ></dd-	  ><dt-	  >mod-space</dt-	  ><dd-	  ><p-	    >Rotate through the available layout algorithms</p-	    ></dd-	  ><dt-	  >mod-shift-space</dt-	  ><dd-	  ><p-	    >Reset the layouts on the current workspace to default</p-	    ></dd-	  ><dt-	  >mod-n</dt-	  ><dd-	  ><p-	    >Resize viewed windows to the correct size</p-	    ></dd-	  ><dt-	  >mod-tab</dt-	  ><dd-	  ><p-	    >Move focus to the next window</p-	    ></dd-	  ><dt-	  >mod-shift-tab</dt-	  ><dd-	  ><p-	    >Move focus to the previous window</p-	    ></dd-	  ><dt-	  >mod-j</dt-	  ><dd-	  ><p-	    >Move focus to the next window</p-	    ></dd-	  ><dt-	  >mod-k</dt-	  ><dd-	  ><p-	    >Move focus to the previous window</p-	    ></dd-	  ><dt-	  >mod-m</dt-	  ><dd-	  ><p-	    >Move focus to the master window</p-	    ></dd-	  ><dt-	  >mod-return</dt-	  ><dd-	  ><p-	    >Swap the focused window and the master window</p-	    ></dd-	  ><dt-	  >mod-shift-j</dt-	  ><dd-	  ><p-	    >Swap the focused window with the next window</p-	    ></dd-	  ><dt-	  >mod-shift-k</dt-	  ><dd-	  ><p-	    >Swap the focused window with the previous window</p-	    ></dd-	  ><dt-	  >mod-h</dt-	  ><dd-	  ><p-	    >Shrink the master area</p-	    ></dd-	  ><dt-	  >mod-l</dt-	  ><dd-	  ><p-	    >Expand the master area</p-	    ></dd-	  ><dt-	  >mod-t</dt-	  ><dd-	  ><p-	    >Push window back into tiling</p-	    ></dd-	  ><dt-	  >mod-comma</dt-	  ><dd-	  ><p-	    >Increment the number of windows in the master area</p-	    ></dd-	  ><dt-	  >mod-period</dt-	  ><dd-	  ><p-	    >Deincrement the number of windows in the master area</p-	    ></dd-	  ><dt-	  >mod-b</dt-	  ><dd-	  ><p-	    >Toggle the status bar gap</p-	    ></dd-	  ><dt-	  >mod-shift-q</dt-	  ><dd-	  ><p-	    >Quit xmonad</p-	    ></dd-	  ><dt-	  >mod-q</dt-	  ><dd-	  ><p-	    >Restart xmonad</p-	    ></dd-	  ><dt-	  >mod-[1..9]</dt-	  ><dd-	  ><p-	    >Switch to workspace N</p-	    ></dd-	  ><dt-	  >mod-shift-[1..9]</dt-	  ><dd-	  ><p-	    >Move client to workspace N</p-	    ></dd-	  ><dt-	  >mod-{w,e,r}</dt-	  ><dd-	  ><p-	    >Switch to physical/Xinerama screens 1, 2, or 3</p-	    ></dd-	  ><dt-	  >mod-shift-{w,e,r}</dt-	  ><dd-	  ><p-	    >Move client to screen 1, 2, or 3</p-	    ></dd-	  ><dt-	  >mod-button1</dt-	  ><dd-	  ><p-	    >Set the window to floating mode and move by dragging</p-	    ></dd-	  ><dt-	  >mod-button2</dt-	  ><dd-	  ><p-	    >Raise the window to the top of the stack</p-	    ></dd-	  ><dt-	  >mod-button3</dt-	  ><dd-	  ><p-	    >Set the window to floating mode and resize by dragging</p-	    ></dd-	  ></dl-	></div-      ></div-    ><div id="examples"-    ><h1-      ><a href="#TOC"-	>Examples</a-	></h1+	>Close the focused window</p+	></dd+      ><dt+      >mod-space</dt+      ><dd       ><p-      >To use xmonad as your window manager add to your <em-	>~/.xinitrc</em-	> file:</p-      ><pre class="sourceCode haskell"-      ><code-	>exec xmonad-</code-	></pre-      ></div-    ><div id="customization"-    ><h1-      ><a href="#TOC"-	>Customization</a-	></h1+	>Rotate through the available layout algorithms</p+	></dd+      ><dt+      >mod-shift-space</dt+      ><dd       ><p-      >xmonad is customized in ~/.xmonad/xmonad.hs, and then restarting with mod-q.</p+	>Reset the layouts on the current workspace to default</p+	></dd+      ><dt+      >mod-n</dt+      ><dd       ><p-      >You can find many extensions to the core feature set in the xmonad- contrib package, available through your package manager or from <a href="http://xmonad.org"-	>xmonad.org</a-	>.</p-      ><div id="modular-configuration"-      ><h2-	><a href="#TOC"-	  >Modular Configuration</a-	  ></h2-	><p-	>As of <em-	  >xmonad-0.9</em-	  >, any additional Haskell modules may be placed in <em-	  >~/.xmonad/lib/</em-	  > are available in GHC's searchpath. Hierarchical modules are supported: for example, the file <em-	  >~/.xmonad/lib/XMonad/Stack/MyAdditions.hs</em-	  > could contain:</p-	><pre class="sourceCode haskell"-	><code-	  >module XMonad.Stack.MyAdditions (function1) where+	>Resize viewed windows to the correct size</p+	></dd+      ><dt+      >mod-tab</dt+      ><dd+      ><p+	>Move focus to the next window</p+	></dd+      ><dt+      >mod-shift-tab</dt+      ><dd+      ><p+	>Move focus to the previous window</p+	></dd+      ><dt+      >mod-j</dt+      ><dd+      ><p+	>Move focus to the next window</p+	></dd+      ><dt+      >mod-k</dt+      ><dd+      ><p+	>Move focus to the previous window</p+	></dd+      ><dt+      >mod-m</dt+      ><dd+      ><p+	>Move focus to the master window</p+	></dd+      ><dt+      >mod-return</dt+      ><dd+      ><p+	>Swap the focused window and the master window</p+	></dd+      ><dt+      >mod-shift-j</dt+      ><dd+      ><p+	>Swap the focused window with the next window</p+	></dd+      ><dt+      >mod-shift-k</dt+      ><dd+      ><p+	>Swap the focused window with the previous window</p+	></dd+      ><dt+      >mod-h</dt+      ><dd+      ><p+	>Shrink the master area</p+	></dd+      ><dt+      >mod-l</dt+      ><dd+      ><p+	>Expand the master area</p+	></dd+      ><dt+      >mod-t</dt+      ><dd+      ><p+	>Push window back into tiling</p+	></dd+      ><dt+      >mod-comma</dt+      ><dd+      ><p+	>Increment the number of windows in the master area</p+	></dd+      ><dt+      >mod-period</dt+      ><dd+      ><p+	>Deincrement the number of windows in the master area</p+	></dd+      ><dt+      >mod-b</dt+      ><dd+      ><p+	>Toggle the status bar gap</p+	></dd+      ><dt+      >mod-shift-q</dt+      ><dd+      ><p+	>Quit xmonad</p+	></dd+      ><dt+      >mod-q</dt+      ><dd+      ><p+	>Restart xmonad</p+	></dd+      ><dt+      >mod-[1..9]</dt+      ><dd+      ><p+	>Switch to workspace N</p+	></dd+      ><dt+      >mod-shift-[1..9]</dt+      ><dd+      ><p+	>Move client to workspace N</p+	></dd+      ><dt+      >mod-{w,e,r}</dt+      ><dd+      ><p+	>Switch to physical/Xinerama screens 1, 2, or 3</p+	></dd+      ><dt+      >mod-shift-{w,e,r}</dt+      ><dd+      ><p+	>Move client to screen 1, 2, or 3</p+	></dd+      ><dt+      >mod-button1</dt+      ><dd+      ><p+	>Set the window to floating mode and move by dragging</p+	></dd+      ><dt+      >mod-button2</dt+      ><dd+      ><p+	>Raise the window to the top of the stack</p+	></dd+      ><dt+      >mod-button3</dt+      ><dd+      ><p+	>Set the window to floating mode and resize by dragging</p+	></dd+      ></dl+    ></div+  ></div+><div id="examples"+><h1+  ><a href="#TOC"+    >Examples</a+    ></h1+  ><p+  >To use xmonad as your window manager add to your <em+    >~/.xinitrc</em+    > file:</p+  ><pre class="sourceCode haskell"+  ><code+    >exec xmonad+</code+    ></pre+  ></div+><div id="customization"+><h1+  ><a href="#TOC"+    >Customization</a+    ></h1+  ><p+  >xmonad is customized in ~/.xmonad/xmonad.hs, and then restarting with mod-q.</p+  ><p+  >You can find many extensions to the core feature set in the xmonad- contrib package, available through your package manager or from <a href="http://xmonad.org"+    >xmonad.org</a+    >.</p+  ><div id="modular-configuration"+  ><h2+    ><a href="#TOC"+      >Modular Configuration</a+      ></h2+    ><p+    >As of <em+      >xmonad-0.9</em+      >, any additional Haskell modules may be placed in <em+      >~/.xmonad/lib/</em+      > are available in GHC's searchpath. Hierarchical modules are supported: for example, the file <em+      >~/.xmonad/lib/XMonad/Stack/MyAdditions.hs</em+      > could contain:</p+    ><pre class="sourceCode haskell"+    ><code+      >module XMonad.Stack.MyAdditions (function1) where     function1 = error &quot;function1: Not implemented yet!&quot; </code-	  ></pre-	><p-	>Your xmonad.hs may then import XMonad.Stack.MyAdditions as if that module was contained within xmonad or xmonad-contrib.</p-	></div-      ></div-    ><div id="bugs"-    ><h1-      ><a href="#TOC"-	>Bugs</a-	></h1-      ><p-      >Probably. If you find any, please report them to the <a href="http://code.google.com/p/xmonad/issues/list"-	>bugtracker</a-	></p-      ></div-    ></body-  ></html+      ></pre+    ><p+    >Your xmonad.hs may then import XMonad.Stack.MyAdditions as if that module was contained within xmonad or xmonad-contrib.</p+    ></div+  ></div+><div id="bugs"+><h1+  ><a href="#TOC"+    >Bugs</a+    ></h1+  ><p+  >Probably. If you find any, please report them to the <a href="http://code.google.com/p/xmonad/issues/list"+    >bugtracker</a+    ></p+  ></div >+</body>+</html>
tests/Properties.hs view
@@ -14,7 +14,7 @@ import Data.Maybe import System.Environment import Control.Exception    (assert)-import qualified Control.Exception as C+import qualified Control.Exception.Extensible as C import Control.Monad import Test.QuickCheck hiding (promote) import System.IO.Unsafe@@ -613,13 +613,13 @@  -- and help out hpc prop_abort x = unsafePerformIO $ C.catch (abort "fail")-                                         (\e -> return $  show e == "xmonad: StackSet: fail" )+                                         (\(C.SomeException e) -> return $  show e == "xmonad: StackSet: fail" )    where      _ = x :: Int  -- new should fail with an abort prop_new_abort x = unsafePerformIO $ C.catch f-                                         (\e -> return $ show e == "xmonad: StackSet: non-positive argument to StackSet.new" )+                                         (\(C.SomeException e) -> return $ show e == "xmonad: StackSet: non-positive argument to StackSet.new" )    where      f = new undefined{-layout-} [] [] `seq` return False 
util/GenerateManpage.hs view
@@ -34,9 +34,9 @@ import Text.PrettyPrint.HughesPJ import Distribution.Text -import Text.Pandoc+import Text.Pandoc -- works with 1.6 -releaseDate = "25 October 09"+releaseDate = "21 December 10"  trim :: String -> String trim = reverse . dropWhile isSpace . reverse . dropWhile isSpace@@ -76,19 +76,24 @@         . lines         <$> readFile "./man/xmonad.1.markdown" +    Right template <- getDefaultTemplate Nothing "man"     writeFile "./man/xmonad.1"         . (manHeader ++)-        . writeMan writeOpts+        . writeMan writeOpts{ writerStandalone = True, writerTemplate = template }         $ parsed     putStrLn "Documentation created: man/xmonad.1" +    Right template <- getDefaultTemplate Nothing "html"     writeFile "./man/xmonad.1.html"         . writeHtmlString writeOpts-            { writerHeader = "<h1>"++releaseName++"</h1>"++-                             "<p>Section: xmonad manual (1)<br>"+++            { writerVariables =+                        [("include-before"+                            ,"<h1>"++releaseName++"</h1>"+++                             "<p>Section: xmonad manual (1)<br/>"++                              "Updated: "++releaseDate++"</p>"++-                             "<hr>"+                             "<hr/>")]             , writerStandalone = True+            , writerTemplate = template             , writerTableOfContents = True }         $ parsed     putStrLn "Documentation created: man/xmonad.1.html"
xmonad.cabal view
@@ -1,5 +1,5 @@ name:               xmonad-version:            0.9.1+version:            0.9.2 homepage:           http://xmonad.org synopsis:           A tiling window manager description:@@ -22,6 +22,7 @@                     util/GenerateManpage.hs cabal-version:      >= 1.2 build-type:         Simple+tested-with:        GHC == 6.12.3, GHC == 6.10.4, GHC == 7.0.1  data-files:         man/xmonad.hs @@ -43,12 +44,17 @@                         XMonad.StackSet      if flag(small_base)-        build-depends: base < 4 && >=3, containers, directory, process, filepath+        build-depends: base < 5 && >=3, containers, directory, process, filepath, extensible-exceptions     else         build-depends: base < 3     build-depends: X11>=1.5.0.0 && < 1.6, mtl, unix -    ghc-options:        -funbox-strict-fields -Wall+    if true+        ghc-options:        -funbox-strict-fields -Wall++    if impl(ghc >= 6.12.1)+        ghc-options:        -fno-warn-unused-do-bind+     ghc-prof-options:   -prof -auto-all     extensions:         CPP @@ -66,7 +72,12 @@                         XMonad.Operations                         XMonad.StackSet -    ghc-options:        -funbox-strict-fields -Wall+    if true +        ghc-options:    -funbox-strict-fields -Wall++    if impl(ghc >= 6.12.1)+        ghc-options:    -fno-warn-unused-do-bind+     ghc-prof-options:   -prof -auto-all     extensions:         CPP @@ -76,4 +87,4 @@         build-depends:  QuickCheck < 2         ghc-options:    -Werror     if flag(testing) && flag(small_base)-        build-depends:  random+        build-depends:  filepath, process, directory, mtl, unix, X11, base, containers, random, extensible-exceptions