[xmonad] darcs patch: XMonad.Config.CustomKeys - new module

Valery V. Vorotyntsev valery.vv at gmail.com
Mon Nov 12 12:57:44 EST 2007


Mon Nov 12 19:55:30 EET 2007  "Valery V. Vorotyntsev" <valery.vv at gmail.com>
  * XMonad.Config.CustomKeys - new module
  This module is another key bindings customization helper.

  Differences from XMonad.Util.EZConfig by Devin Mullins:
    EZConfig   -- M.union/M.difference
    CustomKeys -- Monad.Reader + foldr'ed M.insert/M.delete

  IMHO, both modules could evolve into something nice. :)

Please discuss.

--
vvv
-------------- next part --------------

New patches:

[XMonad.Config.CustomKeys - new module
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071112175530
 This module is another key bindings customization helper.
 
 Differences from XMonad.Util.EZConfig by Devin Mullins:
   EZConfig   -- M.union/M.difference
   CustomKeys -- Monad.Reader + foldr'ed M.insert/M.delete
 
 IMHO, both modules could evolve into something nice. :)
 Please discuss at the mailing list.
] {
addfile ./XMonad/Config/CustomKeys.hs
hunk ./XMonad/Config/CustomKeys.hs 1
+--------------------------------------------------------------------
+-- |
+-- Module     : XMonad.Config.CustomKeys
+-- Copyright  : (c) 2007 Valery V. Vorotyntsev
+-- License    : BSD3-style (see LICENSE)
+--
+-- Maintainer : Valery V. Vorotynsev <valery.vv at gmail.com>
+--
+-- Customized key bindings.
+--
+-- (See also "XMonad.Util.EZConfig" in XMonadContrib.)
+--------------------------------------------------------------------
+
+module XMonad.Config.CustomKeys (
+                                 -- * Usage
+                                 -- $usage
+                                 customKeys
+                                ) where
+
+import XMonad
+import Graphics.X11.Xlib
+
+import Control.Monad.Reader
+import qualified Data.Map as M
+
+-- $usage
+--
+-- 1. In @~\/.xmonad\/xmonad.hs@ add:
+--
+-- > import XMonad.Config.CustomKeys
+--
+-- 2. Set key bindings with 'customKeys':
+--
+-- > main = xmonad defaultConfig { keys = customKeys delkeys inskeys }
+-- >     where
+-- >       delkeys :: XConfig l -> [(KeyMask, KeySym)]
+-- >       delkeys XConfig {modMask = modm} =
+-- >           -- we're preferring Futurama to Xinerama here
+-- >           [ (modm .|. m, k) | (m, k) <- zip [0, shiftMas] [xK_w, xK_e, xK_r] ]
+-- >
+-- >       inskeys :: XConfig l -> [((KeyMask, KeySym), X ())]
+-- >       inskeys conf@(XConfig {modMask = modm}) =
+-- >           [ ((mod1Mask,             xK_F2  ), spawn $ terminal conf)
+-- >           , ((modm .|. controlMask, xK_F11 ), spawn "xscreensaver-command -lock")
+-- >           , ((mod1Mask,             xK_Down), spawn "amixer set Master 1-")
+-- >           , ((mod1Mask,             xK_Up  ), spawn "amixer set Master 1+")
+-- >           ]
+
+-- | XXX comment me (no tautology please)
+customKeys :: (XConfig Layout -> [(KeyMask, KeySym)]) -- ^ unused shortcuts
+           -> (XConfig Layout -> [((KeyMask, KeySym), X ())]) -- ^ new bindings
+           -> XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
+customKeys = (runReader .) . customize
+
+customize :: (XConfig Layout -> [(KeyMask, KeySym)])
+          -> (XConfig Layout -> [((KeyMask, KeySym), X ())])
+          -> Reader (XConfig Layout) (M.Map (KeyMask, KeySym) (X ()))
+customize ds is = Reader (keys defaultConfig) >>= delete ds >>= insert is
+
+delete :: (MonadReader r m, Ord a) => (r -> [a]) -> M.Map a b -> m (M.Map a b)
+delete dels kmap = asks dels >>= return . foldr M.delete kmap
+
+insert :: (MonadReader r m, Ord a) =>
+          (r -> [(a, b)]) -> M.Map a b -> m (M.Map a b)
+insert ins kmap = asks ins >>= return . foldr (uncurry M.insert) kmap
hunk ./XMonadContrib.cabal 56
+                        XMonad.Config.CustomKeys
}

Context:

[NoBorders.hs: remove modifierDescription definitions, so NoBorders and SmartBorder don't change the layout description.
Brent Yorgey <byorgey at gmail.com>**20071112154525] 
[NoBorder.hs: documentation updates
Brent Yorgey <byorgey at gmail.com>**20071112154411] 
[fix intro doco for UrgencyHook
Devin Mullins <me at twifkak.com>**20071112044102
 Ooh, this new XConfig l -> XConfig l' function makes the docs disappear!
] 
[revert UrgencyHook behavior back to ICCCM non-compliance
Devin Mullins <me at twifkak.com>**20071112043325
 Note: If you're using UrgencyHook, this will break your config.
 @withUrgencyHook SomeUrgencyHook@ is XConfig -> XConfig, now. The layout hook
 has been renamed to urgencyLayoutHook.
 
 It may also be worth noting that, in order to recreate the old behavior without
 using redoLayout (so that this may be ported to an eventHook), I had to hijack
 logHook. Shouldn't harm anything, though.
 
 TODO: update main docs
] 
[add StdoutUrgencyHook, to help debug weird client behavior
Devin Mullins <me at twifkak.com>**20071112015855] 
[EZConfig: update for kind change in XConfig
Spencer Janssen <sjanssen at cse.unl.edu>**20071111215314] 
[changes to work with XConfig of kind * -> *.
David Roundy <droundy at darcs.net>**20071111005629] 
[depend on X11==1.3.0.20071111 for new type defns and 64 bit clean
Don Stewart <dons at galois.com>**20071111201055] 
[font size 15 pixels is the dzen default
Don Stewart <dons at galois.com>**20071109190328] 
[add two new modules, one to name layouts, another to select a layout.
David Roundy <droundy at darcs.net>**20071111195036
 The latter is pretty useless, as there's no way to find out what
 layouts are available, but it can at least allow you to select between
 any layouts that you happen to be using already (in one workspace or
 another).  The former is handy any time you'd rather have a short name
 for a layout (either for selecting, or for viewing in a status bar).
] 
[add helper module for writing configs
Devin Mullins <me at twifkak.com>**20071111075222
 Looking for suggestions on this module. Does it belong here? Is there a better
 name? Should the additional* functions pass the modMask to their second
 argument? etc.
] 
[let clients track their urgency, per ICCCM
Devin Mullins <me at twifkak.com>**20071111021241
 This removes the dependency on redoLayout -- now WithUrgencyHook defines handleMess only.
] 
[wrap user code in userCode, go figure
Devin Mullins <me at twifkak.com>**20071111002617
 (thanks à shachaf for that suggestion)
] 
[add LANGUAGE PatternGuards to UrgencyHook
Devin Mullins <me at twifkak.com>**20071111002238] 
[remove dead doco
Devin Mullins <me at twifkak.com>**20071111001443] 
[clarify config code... a bit
Devin Mullins <me at twifkak.com>**20071111000933] 
[fix doco for UrgencyHook
Devin Mullins <me at twifkak.com>**20071111000046] 
[add NoUrgencyHook, for shachaf's sake
Devin Mullins <me at twifkak.com>**20071110235857] 
[oops, export the configuration options
Devin Mullins <me at twifkak.com>**20071110233313] 
[add dzenUrgencyHook back
Devin Mullins <me at twifkak.com>**20071110232706
 TODO: fix all the doco
] 
[remove dzenUrgencyHook* from Dzen module
Devin Mullins <me at twifkak.com>**20071110231115
 To be replaced by UrgencyHook instances defined in the UrgencyHook module.
] 
[get UrgencyHook to compile
Devin Mullins <me at twifkak.com>**20071110224303
 (The boilerplate, it burns!) Still isn't useful (to me) yet, as I haven't
 ported dzenUrgencyHook to the new UrgencyHook class.
] 
[fix bug in avoidStruts.
David Roundy <droundy at darcs.net>**20071110214205] 
[typo fix in Util.Run
Devin Mullins <me at twifkak.com>**20071110211328] 
[add a few docs (very sparse) to DynamicWorkspaces.
David Roundy <droundy at darcs.net>**20071109152649] 
[add withWorkspace prompt, which automatically creates workspace if nonexistent.
David Roundy <droundy at darcs.net>**20071109152124] 
[Generalize safe/unsafeSpawn to MonadIO
Spencer Janssen <sjanssen at cse.unl.edu>**20071109073810] 
[Magnifier.hs: update so it at least compiles
gwern0 at gmail.com**20071108012522
 Code modified on advice of Wachter; note I make absolutely no claims that the code runs correctly or doesn't eat your pets or does anything besides compile without any warnings.
] 
[Dzen.hs: resend doc update
gwern0 at gmail.com**20071106211537] 
[Update docs in Util
gwern0 at gmail.com**20071106190258] 
[fix types to work with Mats fix to X11.
David Roundy <droundy at darcs.net>**20071108192318] 
[Change the type of properties from Word32 to CLong
Mats Jansborg <mats at jansb.org>**20071101192730] 
[fix bug in avoidStruts.
David Roundy <droundy at darcs.net>**20071108175250
 I've now tested this module, and it works on x86--but doesn't work on
 x86-64, because ManageDocks doesn't work on 64-bit.  But in any case, it
 works almost perfectly, with no user intervention needed (and no special
 hooks).  The only catch is that it doesn't notice when a panel disappears,
 so the layout won't adjust until the next refresh (e.g. if you change
 focus, layout or workspace).
] 
[clean up Droundy.hs.
David Roundy <droundy at darcs.net>**20071107144106] 
[DynamicLog: typo in docs
Andrea Rossato <andrea.rossato at unibz.it>**20071108010104] 
[over pararenthesised arty fibonacci
Don Stewart <dons at galois.com>**20071107230601] 
[Remove spurious import in Arossato's config.
Chris Mears <chris at cmears.id.au>**20071107215630] 
[Add my configuration file
Andrea Rossato <andrea.rossato at unibz.it>**20071107191305
 Spencer and David: you really did a great job. Thank you guys!
] 
[add higher order 'dzen' function
Don Stewart <dons at galois.com>**20071107183107
 
 The intent is that:
 
     main = dzen xmonad
 
 should just work, and indeed it does now, for launching a cool status
 bar with minimal effort.
] 
[Set defaultGaps for makeSimpleDzenConfig
Spencer Janssen <sjanssen at cse.unl.edu>**20071107092037] 
[DynamicLog: Add makeSimpleDzenConfig function
Eric Mertens <emertens at galois.com>**20071107085514
 
 This function serves as an example for spawning a dzen2 instance and printing
 the defaultPP to it.
] 
[Use spawnPipe in sjanssenConfig
Spencer Janssen <sjanssen at cse.unl.edu>**20071107082637] 
[Add spawnPipe
Spencer Janssen <sjanssen at cse.unl.edu>**20071107075009] 
[DynamicLog: add ppOutput field to PP
Eric Mertens <emertens at galois.com>**20071107055805
 
 This allows the user to specify an alternate destination for logging output
 instead of outputing to stdout (which is still the default).
] 
[Add EwmhDesktops to exposed-modules
Spencer Janssen <sjanssen at cse.unl.edu>**20071107031135] 
[Actions: update SinkAll doc
gwern0 at gmail.com**20071106192158] 
[Prompt.hs: update names
gwern0 at gmail.com**20071106192054] 
[EwmhDesktops: move to correct name, update so it compiles
gwern0 at gmail.com**20071106191751] 
[Man.hs: -Wall option not necessary as that's turned on in the Cabal files
gwern0 at gmail.com**20071106190659] 
[make Setup haddock work again
Lukas Mai <l.mai at web.de>**20071106141829] 
[change MultiToggle interface; add docs
Lukas Mai <l.mai at web.de>**20071106141729] 
[Remove SwitchTrans
Spencer Janssen <sjanssen at cse.unl.edu>**20071106065933] 
[Remove MetaModule
Spencer Janssen <sjanssen at cse.unl.edu>**20071106023713] 
[add serializable SwitchTrans (a.k.a. MultiToggle)
Lukas Mai <l.mai at web.de>**20071106005819] 
[make TilePrime compile again
l.mai at web.de**20071105233218] 
[add LayoutHints to MetaModule
l.mai at web.de**20071105233143] 
[make LayoutHints compile again
l.mai at web.de**20071105233020] 
[Expose LayoutCombinators
Spencer Janssen <sjanssen at cse.unl.edu>**20071106021611] 
[Add LANGUAGE pragmas for ManageDocks
Spencer Janssen <sjanssen at cse.unl.edu>**20071106021507] 
[Combo builds now
Spencer Janssen <sjanssen at cse.unl.edu>**20071106021341] 
[Make Combo build on GHC 6.8
Spencer Janssen <sjanssen at cse.unl.edu>**20071106021126] 
[Stupid mistake
Spencer Janssen <sjanssen at cse.unl.edu>**20071105101052] 
[-Werror
Spencer Janssen <sjanssen at cse.unl.edu>**20071105060223] 
[fix Config.Droundy to compile again.
David Roundy <droundy at darcs.net>**20071105205339] 
[-Wall police
Spencer Janssen <sjanssen at cse.unl.edu>**20071105060036] 
[Minor updates to Sjanssen.hs
Spencer Janssen <sjanssen at cse.unl.edu>**20071105055022] 
[Use configurations
Spencer Janssen <sjanssen at cse.unl.edu>**20071105034109] 
[-Wall is on
Don Stewart <dons at galois.com>**20071105031815] 
[Revert ghc-options changes
Spencer Janssen <sjanssen at cse.unl.edu>**20071105030327] 
[forgot to add my config file
Don Stewart <dons at galois.com>**20071105025856] 
[build with optimisations on as usual, fix a few compile errors
Don Stewart <dons at galois.com>**20071105024858] 
[Add XMonad.Config.Sjanssen
Spencer Janssen <sjanssen at cse.unl.edu>**20071105005832] 
[Move configs/droundy.hs to an actual library module
Spencer Janssen <sjanssen at cse.unl.edu>**20071104202957] 
[Improve test hook.
Spencer Janssen <sjanssen at cse.unl.edu>**20071104202919
 --disable-optimizations makes testing much faster.
 --user allows Cabal to satisfy dependencies from the user package database.
] 
[fix warnings in Combo.
David Roundy <droundy at darcs.net>**20071101214504] 
[make WorkspaceDir always store absolute pathnames.
David Roundy <droundy at darcs.net>**20071101214401] 
[add new off-center layout combinators.
David Roundy <droundy at darcs.net>**20071101214216] 
[add configs demo directory
David Roundy <droundy at darcs.net>**20071101203720] 
[Add Cabal stuff
Spencer Janssen <sjanssen at cse.unl.edu>**20071101202041] 
[make Hierarchical LayoutCombinators.
David Roundy <droundy at darcs.net>**20071101185418] 
[fix selectWorkspace to work with new config.
David Roundy <droundy at darcs.net>**20071101183546] 
[Hierarchify
Spencer Janssen <sjanssen at cse.unl.edu>**20071101201059] 
[Use hierarchical module names from the core
Spencer Janssen <sjanssen at cse.unl.edu>**20071101182824] 
[code to define a strut-avoiding layout.
David Roundy <droundy at darcs.net>**20071023220025] 
[reenable JumpToLayout in NewSelect.
David Roundy <droundy at darcs.net>**20071101181128] 
[-Wall police in Run.
David Roundy <droundy at darcs.net>**20071101152028] 
[port Combo (dropping combo).
David Roundy <droundy at darcs.net>**20071101152915] 
[Port ToggleLayouts
Spencer Janssen <sjanssen at cse.unl.edu>**20071101091853] 
[Port WorkspacePrompt
Spencer Janssen <sjanssen at cse.unl.edu>**20071101090425] 
[Port Accordion
Spencer Janssen <sjanssen at cse.unl.edu>**20071101090341] 
[Port Dishes
Spencer Janssen <sjanssen at cse.unl.edu>**20071101090312] 
[Dishes: tabs
Spencer Janssen <sjanssen at cse.unl.edu>**20071101090237] 
[Port DragPane
Spencer Janssen <sjanssen at cse.unl.edu>**20071101085733] 
[Port MosaicAlt
Spencer Janssen <sjanssen at cse.unl.edu>**20071101085524] 
[Port ResizableTile
Spencer Janssen <sjanssen at cse.unl.edu>**20071101085500] 
[Port Roledex
Spencer Janssen <sjanssen at cse.unl.edu>**20071101085430] 
[Port Spiral
Spencer Janssen <sjanssen at cse.unl.edu>**20071101085402] 
[Port TagWindows
Spencer Janssen <sjanssen at cse.unl.edu>**20071101085335] 
[Port ThreeColumns
Spencer Janssen <sjanssen at cse.unl.edu>**20071101085229] 
[Port TwoPane
Spencer Janssen <sjanssen at cse.unl.edu>**20071101085151] 
[Port XMonadPrompt
Spencer Janssen <sjanssen at cse.unl.edu>**20071101085037] 
[XMonadPrompt: tabs
Spencer Janssen <sjanssen at cse.unl.edu>**20071101084939] 
[Port WindowNavigation
Spencer Janssen <sjanssen at cse.unl.edu>**20071101084852] 
[Port Submap
Spencer Janssen <sjanssen at cse.unl.edu>**20071101084744] 
[Port CycleWS
Spencer Janssen <sjanssen at cse.unl.edu>**20071101084431] 
[NO TABS
Spencer Janssen <sjanssen at cse.unl.edu>**20071101083954] 
[Port Commands
Spencer Janssen <sjanssen at cse.unl.edu>**20071101083236] 
[XPrompt: don't import XMonad.config
Spencer Janssen <sjanssen at cse.unl.edu>**20071101074149] 
[More porting
Spencer Janssen <sjanssen at cse.unl.edu>**20071101073506] 
[Port DynamicLog
Spencer Janssen <sjanssen at cse.unl.edu>**20071101072606] 
[Port NoBorders
Spencer Janssen <sjanssen at cse.unl.edu>**20071101070859] 
[LayoutModifier: LayoutMessages have moved
Spencer Janssen <sjanssen at cse.unl.edu>**20071101070724] 
[Remove Config import from Run
Spencer Janssen <sjanssen at cse.unl.edu>**20071101070408] 
[Remove 'descriptions' stuff from NewSelect.  I think we can do this without make LayoutClass larger
Spencer Janssen <sjanssen at cse.unl.edu>**20071101033844] 
[add NewSelect layout combinator.
David Roundy <droundy at darcs.net>**20071024152648
 This patch adds a selection layout combinator ||| which
 replaces Select, and makes the Layout data type unnecessary.
 This combinator isn't yet feature-complete, as I didn't implement
 backwards rotation (PrevLayout), but that's obviously doable.  This
 patch requires the descriptions function be added to LayoutClass in
 core.
] 
[ManPrompt.hs: auto-complete explicit paths (those with `/')
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071104202056
 Bash's compgen is used for this (like in ShellPrompt.hs).
 
 Enable all GHC warnings.
 
 Improve documentation (slightly).
] 
[clean up destroyed windows from urgents list
Devin Mullins <me at twifkak.com>**20071103150358] 
[add focusUrgent action, for those too lazy to read
Devin Mullins <me at twifkak.com>**20071103055458] 
[changed urgent state from Set to list
Devin Mullins <me at twifkak.com>**20071103055143] 
[fix examples
Devin Mullins <me at twifkak.com>**20071103022011] 
[add haddock for top-level Dzen bindings
Devin Mullins <me at twifkak.com>**20071103021705] 
[expose dzenWithArgs, dzenUrgencyHookWithArgs (for colors!)
Devin Mullins <me at twifkak.com>**20071030072455] 
[use a global IORef to keep list of urgent windows
Devin Mullins <me at twifkak.com>**20071027064810] 
[fix parse error in pattern match
Brent Yorgey <byorgey at gmail.com>**20071029174150] 
[allow use of multiple toggles in ToggleLayouts.
David Roundy <droundy at darcs.net>**20071026210643] 
[WindowNavigation.hs: documentation fix (navigateBorder -> navigateColor)
Brent Yorgey <byorgey at gmail.com>**20071029155731] 
[XMonadPrompt: use a single blank
Andrea Rossato <andrea.rossato at unibz.it>**20071029091618] 
[Added xmonadPromptC
cardboard42 at gmail.com**20071027014811
 
 I added xmonadPromptC which takes a user defined list of commands as in Command.runCommand
 
] 
[MetaModule.hs: add ManPrompt, remove ViewPrev
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071029075621] 
[Factor out some of dzenPP's goodies
Spencer Janssen <sjanssen at cse.unl.edu>**20071029015556] 
[Don't reverse sjanssenPP
Spencer Janssen <sjanssen at cse.unl.edu>**20071028224843] 
[MetaModule.hs: someone forgot the (), so GHC was giving a warning. Small fix to quiet the warning.
gwern0 at gmail.com**20071027150847] 
[ViewPrev.hs: deleted
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071027090937
 Its functionality is now part of CycleWS module.
 CycleWS.hs: Nelson Elhage added to authors.
] 
[add more details on using smartBorders
Don Stewart <dons at galois.com>**20071026224510] 
[add dynamicLogDzen, a dwm status bar, using dzen colour codes
Don Stewart <dons at galois.com>**20071026221944] 
[XPrompt: removed unneeded parenteses
Andrea Rossato <andrea.rossato at unibz.it>**20071026221505] 
[ShellPrompt: remove harcoded path when calling bash
Andrea Rossato <andrea.rossato at unibz.it>**20071026212334] 
[ShellPrompt: reformat the comments to complay with the module style
Andrea Rossato <andrea.rossato at unibz.it>**20071026211956] 
[XPrompt: catch exceptions when running the completion function
Andrea Rossato <andrea.rossato at unibz.it>**20071026211859] 
[CycleWS: StackSet.findIndex is now findTag
Andrea Rossato <andrea.rossato at unibz.it>**20071026211802] 
[Dzen.hs: replace 'findIndex' by 'findTag' to match renaming in core.
Brent Yorgey <byorgey at gmail.com>**20071022204335] 
[XPrompt.hs: add sensible bindings for Home and End
gwern0 at gmail.com**20071026035026] 
[XPrompt.hs: add a pasteString function and keybinding
gwern0 at gmail.com**20071026034920] 
[TilePrime.hs: Handle nmaster = 0 reasonably
Eric Mertens <emertens at galois.com>**20071025001750] 
[oops, add period
Devin Mullins <me at twifkak.com>**20071024125448] 
[expand Invisible comments
Devin Mullins <me at twifkak.com>**20071024125213] 
[Run.hs: documentation fix
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071024144244] 
[SshPrompt.hs: use `uniqSort' from XPrompt.hs
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071024144128
 Remove excessive import lists.
] 
[ManPrompt.hs: use `uniqSort' from XPrompt.hs
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071024143905
 TODO list extended.
] 
[ShellPrompt.hs: move `uniqSort' to XPrompt.hs
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071024143820] 
[XPrompt.hs (uniqSort): new function
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071024142241
 Moved from ShellPrompt. There are at least three happy users
 of this function -- ShellPrompt, SshPrompt, and ManPrompt.
] 
[Remove excessive import lists from ShellPrompt
Spencer Janssen <sjanssen at cse.unl.edu>**20071024113106] 
[Use new terminal config option
Spencer Janssen <sjanssen at cse.unl.edu>**20071024110219] 
[Run.hs: do my usual segregation into safe and unsafe runInTerms
gwern0 at gmail.com**20071024003911] 
[Run.hs: specialize runInXTerm to use runInTerm per my mailing list suggestion
gwern0 at gmail.com**20071024001856] 
[Run.hs: +my suggested runInTerm general function
gwern0 at gmail.com**20071024001628] 
[Run.hs, SshPrompt.hs, ShellPrompt.hs: mv runInXTerm back into Run.hs per suggestions
gwern0 at gmail.com**20071024001341] 
[Comments for ConstrainedResize
Dougal Stanton <dougal at dougalstanton.net>**20071020092509] 
[Add ConstrainedResize module
Dougal Stanton <dougal at dougalstanton.net>**20071019173508
 Constrain the aspect ratio of floated windows by holding down shift
] 
[fix stupid dzenUrgencyHook bug
Devin Mullins <me at twifkak.com>**20071021061308] 
[XPrompt.hs: fix vertical alignment of completions.
Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20071023183129] 
[fix bug in DragPane (where we forgot that r was mirrored).
David Roundy <droundy at darcs.net>**20071023152448] 
[STRUT aware gap toggling (clean patch)
mail at joachim-breitner.de**20071022220132
 
 Without this patch, ManageDocks would only set the gap according to a window’s
 STRUT when the window is first mapped. This information would then get lost when
 the user toggle the gap.
    
 Now, when the user toggles the Gap, all present windows are scanned for STRUT
 settings, and the gap is set accordingly. No need to manually configure the gap
 anymore.
 
 This is the same patch as before, but independant of the Hooks patches, and with
 more documentation.
] 
[add new LayoutCombinators module.
David Roundy <droundy at darcs.net>**20071023135638] 
[export DragPane type.
David Roundy <droundy at darcs.net>**20071023134933] 
[make DragPane work with any type (not just Windows).
David Roundy <droundy at darcs.net>**20071023134911] 
[SshPrompt.hs: while I'm here, replace nub with the faster Set trick
gwern0 at gmail.com**20071019181514] 
[ShellPrompt.hs: fmt imports and update
gwern0 at gmail.com**20071019181317] 
[SshPrompt.hs: fmt imports and update
gwern0 at gmail.com**20071019181255] 
[XSelection.hs: fmt imports and sigs
gwern0 at gmail.com**20071019181232] 
[XSelection.hs: +2 functions, safePromptSelection and unsafePromptSelection
gwern0 at gmail.com**20071019181137
 Analogous to Run.hs patch; these use safeSpawn and unsafeSpawn respectively.
] 
[Run.hs: +2 functions, safeSpawn & unsafeSpawn
gwern0 at gmail.com**20071019181009
 See their documentation. This is part of a re-organization of various 'run' commands; this two
 make it easier to go through the shell or not, and will be re-used elsewhere.
] 
[Run.hs: fmt
gwern0 at gmail.com**20071019180953] 
[Run.hs, ShellPrompt.sh: mv runInXTerm to ShellPrompt.hs
gwern0 at gmail.com**20071019180900] 
[XSelection.hs: documentation format changes.
gwern0 at gmail.com**20071019010057] 
[XSelection.hs: +type signature for auxiliary function
gwern0 at gmail.com**20071019010034] 
[XSelection.hs: simplify creation of window
gwern0 at gmail.com**20071019010013
 While spelunking in the xclip source code, I noticed it had much the same call to createSimpleWindow but with a simpler geometry - just 1x1 pixels, not the odd 200x100 of the original code. It seems to work the same and looks better and less mysterious, so unless arossato had a specific reason for those particular two numbers...
] 
[XPrompt.hs: use a single blank
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071022192310
 Excessive blanks in prompts originate from here. Eliminate. :)
 Rewrite `getLastWord' and `skipLastWord' in pointfree style.
] 
[SshPrompt.hs (showXPrompt): use a single blank
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071022192037
 Delete trailing whitespace. Fix documentation typo.
] 
[ShellPrompt.hs (showXPrompt): use a single blank
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071022191741] 
[ManPrompt.hs: a manual page prompt (new module)
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071022191443] 
[Fix pragmas in XMonadContrib
Shachaf Ben-Kiki <shachaf at gmail.com>**20071022011738] 
[introduce new combineTwo layout combinator.
David Roundy <droundy at darcs.net>**20071020191748
 This layout combinator is similar in spirit (and in code) to
 the old combo combinator, but only allows two sublayouts.  As
 a result, we don't need to wrap these in existentials, and reading
 works seamlessly.  Also, we add the feature (which could also be
 added to combo) of being able to change which sublayout a given
 window is in through integration with WindowNavigation.
 
 I envision combo being deprecated soon.  combineTwo isn't quite
 so flexible, but it's much easier and is better-coded also.
] 
[allow layout modifiers to modify a Message in transit.
David Roundy <droundy at darcs.net>**20071020191542
 This is a helpful feature (for, e.g. WindowNavigation) that
 allows modifiers (if they so choose... the old API remains
 supported) to easily send a single Message to the modified
 layout in response to a Message.
] 
[XPrompt.hs (keyPressHandle): Ctrl-g and Ctrl-c added to quit keystrokes
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071020170936
 Obvious comments removed.
] 
[XPrompt.hs: trailing whitespace cleaned
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071020170719] 
[test_XPrompt.hs: there is no ShellPrompt.rmPath
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071019205830] 
[CycleWS.hs (toggleWS): new function
"Valery V. Vorotyntsev" <valery.vv at gmail.com>**20071019205323
 This is a pointfree adaptation of ViewPrev.viewPrev;
 after this patch is applied, it may be a good idea to merge
 ViewPrev.hs into CycleWS.hs.
] 
[update UrgencyHook example config to reflect changes to WindowNavigation and core Config.hs
Brent Yorgey <byorgey at gmail.com>**20071019145526] 
[add ToggleLayouts module.
David Roundy <droundy at darcs.net>**20071018214525] 
[default to empty description for layout modifiers.
David Roundy <droundy at darcs.net>**20071018202604
 This is because modifierDescription is designed to be human-readable,
 and show rarely creates a human-readable description.  And in many (if
 not most) cases, an empty description is precisely what we want.
] 
[beautify description code for empty modifier-description.
David Roundy <droundy at darcs.net>**20071018202438] 
[change definition of 'description' function for LayoutModifier so an extra space is not added if the modifier description is empty.
Brent Yorgey <byorgey at gmail.com>**20071018183054] 
[-Wall police
l.mai at web.de**20071018033000] 
[DynamicLog.hs: Add dzenColor
Eric Mertens <emertens at galois.com>**20071018174523] 
[add function to rename workspaces.
David Roundy <droundy at darcs.net>**20071018145604] 
[fix WindowNavigation comment
l.mai at web.de**20071018054315] 
[change example to dzenUrgencyHook
Devin Mullins <me at twifkak.com>**20071018022026] 
[add dzenUrgencyHook as example (and the one I use)
Devin Mullins <me at twifkak.com>**20071018021742] 
[fixed Dzen and gave it a configurable timeout
Devin Mullins <me at twifkak.com>**20071018012910] 
[rename LayoutSelect & defaultLayout in comments
Devin Mullins <me at twifkak.com>**20071016051819] 
[add import to comments, for clarity
Devin Mullins <me at twifkak.com>**20071012044555] 
[documentation for UrgencyHook
Devin Mullins <me at twifkak.com>**20071012034506] 
[d'oh, minor UrgencyHook cleanup
Devin Mullins <me at twifkak.com>**20071012032558] 
[brand new UrgencyHook contrib, depends on X11-extras WMHints binding
Devin Mullins <me at twifkak.com>**20071011051641
 It's a LayoutModifier which lets you define an urgencyHook function -- the
 action gets performed wheneveran X client sends an XUrgencyHint message (i.e.
 tries to "flash" the "taskbar").
 
 This statically points to Config.urgencyHook, which requires that the user add
 a line to Config.hs-boot, in addition to defining the urgencyHook.
 
 Documentation forthcoming.
] 
[TilePrime.hs: Give a description that distinguishs between horizontal/vertical
Eric Mertens <emertens at galois.com>**20071018063749] 
[Truncate title at 80 characters
Spencer Janssen <sjanssen at cse.unl.edu>**20071018003013] 
[shorten in sjanssenPP too
Spencer Janssen <sjanssen at cse.unl.edu>**20071018002821] 
[Truncate long window titles
Spencer Janssen <sjanssen at cse.unl.edu>**20071018002511] 
[DynamicLog.hs: Add ppWsSep field to PP to specify workspace separator.
Eric Mertens <emertens at galois.com>**20071018001652
 
 This can be useful when you are using colors to distinguish between
 workspaces and simply provides more functionality. The default behavior
 remains the same.
] 
[Wrapping the empty string yields the empty string
Spencer Janssen <sjanssen at cse.unl.edu>**20071018001542] 
[DynamicLog: documentation only
Spencer Janssen <sjanssen at cse.unl.edu>**20071017211427] 
[Allow the user to change the order of workspaces, layout, title
Spencer Janssen <sjanssen at cse.unl.edu>**20071017211303] 
[Don't wrap the layout description by default
Spencer Janssen <sjanssen at cse.unl.edu>**20071017211011] 
[DynamicLog: not . null. Duh.
Spencer Janssen <sjanssen at cse.unl.edu>**20071017210912] 
[A big dynamicLog refactor
Spencer Janssen <sjanssen at cse.unl.edu>**20071017210431
 We introduce the PP type to allow user customization of dynamicLog.
 dynamicLogWithTitle has been eliminated because this is the default behavior
 for dynamicLog now.
] 
[Don't toLower the layout description.
Spencer Janssen <sjanssen at cse.unl.edu>**20071017202953
 If we'd really like lower case layout descriptions, the 'description' method
 in the LayoutClass instances should be changed instead.
] 
[TilePrime.hs: Correct behavior when number of windows <= nmaster
Eric Mertens <emertens at galois.com>**20071017205153
 
 Additionally this patch does various clean-ups that should not
 affect functionality.
] 
[Remove RunInXTerm in favor of Run
Spencer Janssen <sjanssen at cse.unl.edu>**20071017202201] 
[Move runXXX functions to one module
Christian Thiemann <mail at christian-thiemann.de>**20071012145233
 This patch takes runProcessWithInput out of Dmenu, runProcessWithInputAndWait
 out of Dzen, and runInXTerm out of RunInXTerm and collects them in one central
 module called Run.  This way, other modules may include Run instead of Dmenu
 to get what they want without giving the impression of making use of dmenu.
] 
[Fix LANGUAGE pragmas
Shachaf Ben-Kiki <shachaf at gmail.com>**20071017194622] 
[use full screen for single window in TilePrime
l.mai at web.de**20071017191421] 
[RotSlaves.hs: Add rotAll functions
Eric Mertens <emertens at galois.com>**20071017173256] 
[TilePrime.hs: add usage info.
Joachim Fasting <joachim.fasting at gmail.com>**20071017192612] 
[TilePrime.hs: add LANGAUGE pragma.
Joachim Fasting <joachim.fasting at gmail.com>**20071017182042] 
[MetaModule.hs: add WorkspacePrompt.
Joachim Fasting <joachim.fasting at gmail.com>**20071017182027] 
[add TilePrime to MetaModule.
David Roundy <droundy at darcs.net>**20071017133202] 
[Initial import of TilePrime
Eric Mertens <emertens at galois.com>**20071017052017
 
 This layout provides a standard tiling layout with support for resize hints
 and filling the gaps created by them.
] 
[code cleanup in selectWorkspace.
David Roundy <droundy at darcs.net>**20071016231218] 
[allow users to go to dynamically-added workspaces with mod-n.
David Roundy <droundy at darcs.net>**20071016230301] 
[add modules to deal with Workspaces (select, etc) by name using XPrompt.
David Roundy <droundy at darcs.net>**20071016223347] 
[make windowNavigation simpler to use in simplest case.
David Roundy <droundy at darcs.net>**20071016214337] 
[compute nice window border for WindowNavigation properly.
David Roundy <droundy at darcs.net>**20071016213316] 
[fix docs on WindowNavigation.
David Roundy <droundy at darcs.net>**20071016210349] 
[compute a reasonable navigation color based on focussed color.
David Roundy <droundy at darcs.net>**20071015165504] 
[WindowNavigation: don't export the config constructor and some haddock fixes
Andrea Rossato <andrea.rossato at unibz.it>**20071013090524
 I told to David I would have taken care of that: instead of exporting
 the config constructor we export 2 functions: navigateColor and
 noNavigateBorders. Updated documentation accordingly.
] 
[improvements in Combo.
David Roundy <droundy at darcs.net>**20071015132839] 
[TAG 0.4
Spencer Janssen <sjanssen at cse.unl.edu>**20071016212343] 
Patch bundle hash:
7432d9df0f3cb65a53b390fae9a614bb3641bb2d


More information about the xmonad mailing list