New patches: [runLayout is now a LayoutClass method and takes the Workspace and the screen Rectangle Andrea Rossato **20080222175815] { hunk ./XMonad/Core.hs 26 - SomeMessage(..), fromMessage, runLayout, LayoutMessages(..), + SomeMessage(..), fromMessage, LayoutMessages(..), hunk ./XMonad/Core.hs 209 + -- | This calls doLayout if there are any windows to be laid out, and + -- emptyLayout otherwise. + runLayout :: Workspace WorkspaceId (layout a) a -> Rectangle -> X ([(a, Rectangle)], Maybe (layout a)) + runLayout (Workspace _ l ms) r = maybe (emptyLayout l r) (doLayout l r) ms + hunk ./XMonad/Core.hs 239 - -- hunk ./XMonad/Core.hs 253 + runLayout (Workspace i (Layout l) ms) r = fmap (fmap Layout) `fmap` runLayout (Workspace i l ms) r hunk ./XMonad/Core.hs 261 --- | This calls doLayout if there are any windows to be laid out, and --- emptyLayout otherwise. -runLayout :: LayoutClass l a => l a -> Rectangle -> Maybe (Stack a) -> X ([(a, Rectangle)], Maybe (l a)) -runLayout l r = maybe (emptyLayout l r) (doLayout l r) - hunk ./XMonad/Operations.hs 131 - let n = W.tag (W.workspace w) - this = W.view n ws - l = W.layout (W.workspace w) - flt = filter (flip M.member (W.floating ws)) (W.index this) + let wsp = W.workspace w + this = W.view n ws + n = W.tag wsp + flt = filter (flip M.member (W.floating ws)) (W.index this) hunk ./XMonad/Operations.hs 145 - (rs, ml') <- runLayout l viewrect tiled `catchX` runLayout (Layout Full) viewrect tiled + (rs, ml') <- runLayout wsp { W.stack = tiled } viewrect`catchX` runLayout wsp { W.layout = Layout Full, W.stack = tiled } viewrect } [Reimplement Choose with runLayout Andrea Rossato **20080222193119] { hunk ./XMonad/Layout.hs 54 - doLayout (SLeft r l) = (fmap (second . fmap $ SLeft r) .) . doLayout l - doLayout (SRight l r) = (fmap (second . fmap $ SRight l) .) . doLayout r - - emptyLayout (SLeft r l) = (fmap (second . fmap $ SLeft r) .) $ emptyLayout l - emptyLayout (SRight l r) = (fmap (second . fmap $ SRight l) .) $ emptyLayout r + runLayout (W.Workspace i (SLeft r l) ms) = fmap (second . fmap $ SLeft r) . runLayout (W.Workspace i l ms) + runLayout (W.Workspace i (SRight l r) ms) = fmap (second . fmap $ SRight l) . runLayout (W.Workspace i r ms) } [Reimplement Mirror with runLayout Andrea Rossato **20080225083236] { hunk ./XMonad/Layout.hs 133 - doLayout (Mirror l) r s = (map (second mirrorRect) *** fmap Mirror) - `fmap` doLayout l (mirrorRect r) s + runLayout (W.Workspace i (Mirror l) ms) r = (map (second mirrorRect) *** fmap Mirror) + `fmap` runLayout (W.Workspace i l ms) (mirrorRect r) hunk ./XMonad/Layout.hs 136 - emptyLayout (Mirror l) r = (map (second mirrorRect) *** fmap Mirror) - `fmap` emptyLayout l (mirrorRect r) } [update documentation Brent Yorgey **20080311160727] { hunk ./XMonad/Core.hs 194 --- | LayoutClass handling. See particular instances in Operations.hs +-- LayoutClass handling. See particular instances in Operations.hs hunk ./XMonad/Core.hs 196 --- | An existential type that can hold any object that is in Read and LayoutClass. +-- | An existential type that can hold any object that is in 'Read' +-- and 'LayoutClass'. hunk ./XMonad/Core.hs 201 --- from a 'String' +-- from a 'String'. hunk ./XMonad/Core.hs 205 --- | Every layout must be an instance of LayoutClass, which defines +-- | Every layout must be an instance of 'LayoutClass', which defines hunk ./XMonad/Core.hs 208 +-- Minimal complete definition: +-- +-- * 'runLayout' || (('doLayout' || 'pureLayout') && 'emptyLayout'), and +-- +-- * 'handleMessage' || 'pureMessage' +-- +-- You should also strongly consider implementing 'description', +-- although it is not required. +-- +-- Note that any code which /uses/ 'LayoutClass' methods should only +-- ever call 'runLayout', 'handleMessage', and 'description'! In +-- other words, the only calls to 'doLayout', 'pureMessage', and other +-- such methods should be from the default implementations of +-- 'runLayout', 'handleMessage', and so on. This ensures that the +-- proper methods will be used, regardless of the particular methods +-- that any 'LayoutClass' instance chooses to define. hunk ./XMonad/Core.hs 226 - -- | This calls doLayout if there are any windows to be laid out, and - -- emptyLayout otherwise. + -- | By default, 'runLayout' calls 'doLayout' if there are any + -- windows to be laid out, and 'emptyLayout' otherwise. Most + -- instances of 'LayoutClass' probably do not need to implement + -- 'runLayout'; it is only useful for layouts which wish to make + -- use of more of the 'Workspace' information (for example, + -- "XMonad.Layout.PerWorkspace"). hunk ./XMonad/Core.hs 235 - -- | Given a Rectangle in which to place the windows, and a Stack + -- | Given a 'Rectangle' in which to place the windows, and a 'Stack' hunk ./XMonad/Core.hs 241 - -- Also return a modified layout, if this layout needs to be modified - -- (e.g. if we keep track of the windows we have displayed). + -- Also possibly return a modified layout (by returning @Just + -- newLayout@), if this layout needs to be modified (e.g. if it + -- keeps track of some sort of state). Return @Nothing@ if the + -- layout does not need to be modified. + -- + -- Layouts which do not need access to the 'X' monad ('IO', window + -- manager state, or configuration) and do not keep track of their + -- own state should implement 'pureLayout' instead of 'doLayout'. hunk ./XMonad/Core.hs 252 - -- | This is a pure version of doLayout, for cases where we don't need - -- access to the X monad to determine how to layout the windows, and - -- we don't need to modify our layout itself. + -- | This is a pure version of 'doLayout', for cases where we + -- don't need access to the 'X' monad to determine how to lay out + -- the windows, and we don't need to modify the layout itself. hunk ./XMonad/Core.hs 258 - -- | 'emptyLayout' is called when there is no window. + -- | 'emptyLayout' is called when there are no windows. hunk ./XMonad/Core.hs 262 - -- | 'handleMessage' performs message handling for that layout. If - -- 'handleMessage' returns Nothing, then the layout did not respond to - -- that message and the screen is not refreshed. Otherwise, 'handleMessage' - -- returns an updated 'Layout' and the screen is refreshed. + -- | 'handleMessage' performs message handling. If + -- 'handleMessage' returns @Nothing@, then the layout did not + -- respond to the message and the screen is not refreshed. + -- Otherwise, 'handleMessage' returns an updated layout and the + -- screen is refreshed. + -- + -- Layouts which do not need access to the 'X' monad to decide how + -- to handle messages should implement 'pureMessage' instead of + -- 'handleMessage'. hunk ./XMonad/Core.hs 274 - -- | Respond to a message by (possibly) changing our layout, but taking - -- no other action. If the layout changes, the screen will be refreshed. + -- | Respond to a message by (possibly) changing our layout, but + -- taking no other action. If the layout changes, the screen will + -- be refreshed. hunk ./XMonad/Core.hs 280 - -- | This should be a human-readable string that is used when selecting - -- layouts by name. + -- | This should be a human-readable string that is used when + -- selecting layouts by name. The default implementation is + -- 'show', which is in some cases a poor default. hunk ./XMonad/Core.hs 295 --- | Based on ideas in /An Extensible Dynamically-Typed Hierarchy of Exceptions/, --- Simon Marlow, 2006. Use extensible messages to the handleMessage handler. +-- | Based on ideas in /An Extensible Dynamically-Typed Hierarchy of +-- Exceptions/, Simon Marlow, 2006. Use extensible messages to the +-- 'handleMessage' handler. hunk ./XMonad/Core.hs 304 --- A wrapped value of some type in the Message class. +-- A wrapped value of some type in the 'Message' class. hunk ./XMonad/Core.hs 309 --- And now, unwrap a given, unknown Message type, performing a (dynamic) +-- And now, unwrap a given, unknown 'Message' type, performing a (dynamic) hunk ./XMonad/Core.hs 315 --- | X Events are valid Messages +-- X Events are valid Messages. hunk ./XMonad/Core.hs 318 --- | LayoutMessages are core messages that all layouts (especially stateful +-- | 'LayoutMessages' are core messages that all layouts (especially stateful hunk ./XMonad/Main.hs 112 - -- children of the root, they may have disappeared since + -- children of the root, they may have disappeared since hunk ./XMonad/Main.hs 205 --- entered a normal window, makes this focused. +-- entered a normal window: focus it if focusFollowsMouse is set to +-- True in the user's config. } Context: [add property for ensureTags behaviour on hidden workspaces Don Stewart **20080310182557] [Small linecount fix :) robreim@bobturf.org**20080308021939] [Change floats to always use the current screen robreim@bobturf.org**20080308015829] [use -fhpc by default when testing. All developers should have 6.8.x Don Stewart **20080307184223] [more general properties for view, greedyView Don Stewart **20080307181657] [rework failure cases in StackSet.view Don Stewart **20080307181634] [bit more code coverage Don Stewart **20080307180905] [more tests. slightly better test coverage Don Stewart **20080227180113] [test geometry setting Don Stewart **20080227175554] [incorrect invariant test for greedyView Don Stewart **20080225180350] [update LOC claim in man page gwern0@gmail.com**20080215211420] [add quickstart instructions Don Stewart **20080212203502] [Remove non-existent windows on restart Spencer Janssen **20080207091140] [Lift initColor exceptions into Maybe Don Stewart **20080206194858 We should audit all X11 Haskell lib calls we make for whether they throw undocumented exceptions, and then banish that. ] [some things to do Don Stewart **20080206192533] [module uses CPP Don Stewart **20080206190521] [Rename runManageHook to runQuery Spencer Janssen **20080204053336] [let enter dismiss compile errors daniel@wagner-home.com**20080203202852] [Add a startupHook. Brent Yorgey **20080204192445 The only thing I am not sure about here is at what exact point the startupHook should get run. I picked a place that seems to make sense: as late as possible, right before entering the main loop. That way all the layouts/workspaces/other state are set up and the startupHook can manipulate them. ] [Core.hs: add an Applicative instance for X Brent Yorgey **20080204192348] [Core.hs, StackSet.hs: some documentation updates Brent Yorgey **20080201190653] [Make Mirror implement emptyLayout Andrea Rossato **20080128001834] [xmonad.cabal: add `build-type' to make Cabal happy "Valery V. Vorotyntsev" **20080131163213] [Get version from the Paths_xmonad module generated by Cabal Daniel Neri **20080129144037 No need to bump version in more than one place. ] [Kill stale xmonad 0.1 comments Spencer Janssen **20080128211418] [Point to 0.6 release of contrib Spencer Janssen **20080128101115] [notes on releases Don Stewart **20080128171012] [bump output of --version Don Stewart **20080128170840] [Generalize the type of catchIO, use it in Main.hs Spencer Janssen **20080128054651] [Add emptyLayout to LayoutClass, a method to be called when a workspace is empty Andrea Rossato **20080124013207] [clarify copyright Don Stewart **20080108185640] [TAG 0.6 Spencer Janssen **20080127220633] [More other-modules Spencer Janssen **20080127220152] [Update example config Spencer Janssen **20080127212331] [Bump version to 0.6 Spencer Janssen **20080127205000] [Updated ./man/xmonad.1.in to contain new command line parameters Austin Seipp **20080122070153] [Depend on QuickCheck < 2 when building tests Spencer Janssen **20080122070225] [Roll testing into the main executable, use Cabal to build the tests Spencer Janssen **20080119091215] [Simplify duplicate/cloned screen logic Spencer Janssen **20080118032228] [Put the screen removing stuff in getCleanedScreenInfo Joachim Breitner **20071231181556] [Ignore cloned screens Joachim Breitner **20071231180628 This patch ignores screens that are just clones of existing ones, or are completely contained in another. Currently only for rescreen, not yet for xmonad start. ] [-Werror when flag(testing) only Spencer Janssen **20080118014827] [Export doubleFork nicolas.pouillard@gmail.com**20080114202612] [reword comment (previous version didn't make sense to me) Lukas Mai **20071122165925] [The recompile function now returns a boolean status instead of (). nicolas.pouillard@gmail.com**20080105225500] [Make focus-follows-mouse configurable Spencer Janssen **20071229023301] [Strictify all XConfig fields, gives nice error messages when a field is forgotten on construction Spencer Janssen **20071229021923] [Spelling Spencer Janssen **20071229021628] [Wibble Spencer Janssen **20071229021519] [Broadcast button events to all layouts, fix for issue #111 Spencer Janssen **20071227080356] [Config.hs: too many users seem to be ignoring/missing the polite warning not to modify this file; change it to something a bit less polite/more obvious. Brent Yorgey **20071220201549] [Remove desktop manageHook rules in favor of ManageDocks Spencer Janssen **20071222113735] [Wibble Spencer Janssen **20071222041151] [Add support for several flags: Spencer Janssen **20071222020520 --version: print xmonad's version --recompile: recompile xmonad.hs if it is out of date --force-recompile: recompile xmonad.hs unconditionally ] [Remove getProgName capability from restart, we don't use it anymore Spencer Janssen **20071219215011] [Flush pending X calls before restarting Spencer Janssen **20071219162029] [Allow for sharing of home directory across architectures. tim.thelion@gmail.com**20071218065146] [Call 'broadcastMessage ReleaseResources' in restart Spencer Janssen **20071219065710] [Manpage now describes config in ~/.xmonad/xmonad.hs Adam Vogt **20071219023918] [Update manpage to describe greedyView Adam Vogt **20071219023726] [Depend on X11-1.4.1, it has crucial bugfixes Spencer Janssen **20071215022100] [1.4.1 X11 dep Don Stewart **20071214160558] [Set withdrawnState after calling hide Spencer Janssen **20071212060250] [Remove stale comment Spencer Janssen **20071211084236] [Make windows responsible for setting withdrawn state Spencer Janssen **20071211080117] [Remove stale comment Spencer Janssen **20071211075641] [Clean up stale mapped/waitingUnmap state in handle rather than unmanage. Spencer Janssen **20071211074810 This is an attempt to fix issue #96. Thanks to jcreigh for the insights necessary to fix the bug. ] [Delete windows from waitingUnmap that aren't waitng for any unmaps Spencer Janssen **20071211074506] [man/xmonad.hs: add some documentation explaining that 'title' can be used in the manageHook just like 'resource' and 'className'. Brent Yorgey **20071210173357] [normalize Module headers Lukas Mai **20071210085327] [Add 'testing' mode, this should reduce 'darcs check' time significantly Spencer Janssen **20071210004704] [Use XMonad meta-module in Main.hs Spencer Janssen **20071210004456] [TAG 0.5 Spencer Janssen **20071209233044] Patch bundle hash: 2cae5bc3d9a85feef369e89005bd0519c081b051