[xmonad] Amended dynamic property patch

Brandon Allbery allbery.b at gmail.com
Tue Apr 14 15:38:05 UTC 2015


Whoops! Year (what I get for copying the header), and I managed to miss the
common case where the event isn't the one we care about.

1 patch for repository http://code.haskell.org/XMonadContrib:

Tue Apr 14 11:36:57 EDT 2015  allbery.b at gmail.com
  * dynamicproperty
  Run a ManageHook from handleEventHook when a window property changes.
  You would use this to match e.g. browser windows whose title is not
  "final" until after the on-load hooks of the loaded document complete.


New patches:

[dynamicproperty
allbery.b at gmail.com**20150414153657
 Ignore-this: b15d78f8970d08b252ead72a19709b06
 Run a ManageHook from handleEventHook when a window property changes.
 You would use this to match e.g. browser windows whose title is not
 "final" until after the on-load hooks of the loaded document complete.
] {
addfile ./XMonad/Hooks/DynamicProperty.hs
hunk ./XMonad/Hooks/DynamicProperty.hs 1
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  XMonad.Hooks.DynamicProperty
+-- Copyright   :  (c) Brandon S Allbery, 2015
+-- License     :  BSD3-style (see LICENSE)
+--
+-- Maintainer  :  allbery.b at gmail.com
+-- Stability   :  unstable
+-- Portability :  not portable
+--
+-- Module to apply a ManageHook to an already-mapped window when a property
+-- changes. This would commonly be used to match browser windows by title,
+-- since the final title will only be set after (a) the window is mapped,
+-- (b) its document has been loaded, (c) all load-time scripts have run.
+-- (Don't blame browsers for this; it's inherent in HTML and the DOM. And
+-- changing title dynamically is explicitly permitted by ICCCM and EWMH;
+-- you don't really want to have your editor window umapped/remapped to
+-- show the current document and modified state in the titlebar, do you?)
+--
+-- This is a handleEventHook that triggers on a PropertyChange event. It
+-- currently ignores properties being removed, in part because you can't
+-- do anything useful in a ManageHook involving nonexistence of a property.
+--
+-----------------------------------------------------------------------------
+
+module XMonad.Hooks.DynamicProperty where
+
+import XMonad
+import Data.Monoid
+import Control.Applicative
+import Control.Monad (when)
+
+-- |
+-- Run a 'ManageHook' when a specific property is changed on a window. Note
+-- that this will run on any window which changes the property, so you
should
+-- be very specific in your 'MansgeHook' matching (lots of windows change
+-- their titles on the fly!):
+--
+-- dynamicPropertyChange "WM_NAME" (className =? "Iceweasel" <&&> title =?
"whatever" --> doShift "2")
+--
+-- Note that the fixity of (-->) won't allow it to be mixed with ($), so
you
+-- can't use the obvious $ shorthand.
+--
+-- > dynamicPropertyChange "WM_NAME" $ title =? "Foo" --> doFloat -- won't
work!
+--
+-- Consider instead phrasing it like any
+-- other 'ManageHook':
+--
+-- >      , handleEventHook = dynamicPropertyChange "WM_NAME" myDynHook
<+> handleEventHook baseConfig
+-- >
+-- >    {- ... -}
+-- >
+-- >    myDynHook = composeAll [...]
+--
+dynamicPropertyChange :: String -> ManageHook -> Event -> X All
+dynamicPropertyChange prop hook PropertyEvent { ev_window = w, ev_atom =
a, ev_propstate = ps } = do
+  pa <- getAtom prop
+  when (ps == propertyNewValue && a == pa) $ do
+    g <- appEndo <$> userCodeDef (Endo id) (runQuery hook w)
+    windows g
+  return (All False) -- so anything else also processes it
+dynamicPropertyChange _ _ _ = return (All False)
+
+-- | A shorthand for the most common case, dynamic titles
+dynamicTitle :: ManageHook -> Event -> X All
+-- strictly, this should also check _NET_WM_NAME. practically, both will
+-- change and each gets its own PropertyEvent, so we'd need to record that
+-- we saw the event for that window and ignore the second one. Instead,
just
+-- trust that nobody sets only _NET_WM_NAME. (I'm sure this will prove
false,
+-- since there's always someone who can't bother being compliant.)
+dynamicTitle = dynamicPropertyChange "WM_NAME"
hunk ./xmonad-contrib.cabal 167
                         XMonad.Hooks.DynamicBars
                         XMonad.Hooks.DynamicHooks
                         XMonad.Hooks.DynamicLog
+                        XMonad.Hooks.DynamicProperty
                         XMonad.Hooks.DebugStack
                         XMonad.Hooks.EwmhDesktops
                         XMonad.Hooks.FadeInactive
}

Context:

[minor doc fixes to X.C.Mate
Daniel Wagner <me at dmwit.com>**20150330180752
 Ignore-this: f35c2e5068adcf5a04727557078c8a6f
]
[mate-comment-fixup
allbery.b at gmail.com**20150330160523
 Ignore-this: 687b5edc9220469f3e58abcfd4f6449c
 Correct the docstrings / comments in X.C.Mate, which still referenced
 gnomeConfig. Also update the session manager configuration to use
 dconf and a current (on Mint at least) path for the session config.
]
[Add the ability to specify padding used with Maximize
Peter Jones <pjones at devalot.com>**20150309232939
 Ignore-this: 71ac5db4513da0b7a45eb82ec184f4e3
]
[Don't restore windows when changing workspaces
Peter Jones <pjones at devalot.com>**20150310201709
 Ignore-this: 5333205aa1a9fbc5c7844fad69561517
]
[New layout modifier: Hidden
Peter Jones <pjones at devalot.com>**20150309223036
 Ignore-this: 5534fe18e642d1691a9b3f99341e082d

 A layout modifer that is meant to work with the BinarySpacePartition
 layout.  By removing windows from the window set and adding them back
 at a later time, you can move windows to a different branch of the BSP
 tree.

]
[Fixes to warnings with BSP layout
anton.pirogov at gmail.com**20150315100041
 Ignore-this: 7642710fdb2a866150875f2d521d19fd
]
[Improved BinarySpacePartition, added Equalize,Balance and FocusParent and
mouse resize support
anton.pirogov at gmail.com**20150312145220
 Ignore-this: 31b5d7bf38e5b391df266906deb5e382
]
[New layout module X.L.Dwindle
nzeh at cs.dal.ca**20150315130913
 Ignore-this: a1507e9eda6e6cabd679c2c3b50d9a38

 This adds three layouts:  Spiral is a reimplementation of X.L.Spiral.spiral
 with a (to me) more intuitive splitting policy.  Dwindle is similar but
pushes
 the smaller windows into a corner rather than into the center.  Squeeze
just
 stacks windows vertically or horizontally using geometrically decreasing
sizes.
]
[address warnings in P.Pass
Adam Vogt <vogt.adam at gmail.com>**20150313015636
 Ignore-this: 52e03c09c4d5339085e0306044de8977
]
[X.L.AvoidFloats more useful default settings
ankaan at gmail.com**20150310212022
 Ignore-this: af6535bace9219619858751eeeff6520
 Changed default settings with the simple layout modifier. Instead of
asking for a bool indicating if all windows should be avoided, no such bool
is asked for. No windows are avoided by default. I think this will be a
more useful default setting since it would be annoying if dialogue windows
are avoided. The same functionality is possible with the advanced
constructor. This will be easier for new users.

 This will break configurations using the old module, but this will not be
much of an issue since the module has not been added to the repo as of this
writing.
]
[Resolve minor conflict in xmonad-contrib.cabal
ankaan at gmail.com**20150306175436
 Ignore-this: 24ae68c08107a574199b055989d38347
]
[X.L.AvoidFloats, like avoidStruts but for floats
ankaan at gmail.com**20150306171702
 Ignore-this: 3722d7787dd2429313f92f85f3ae1251
 Checks for floating windows within the layout area and finds a maximum area
 rectangle within that does not overlap with any of the floating windows.
 This rectangle is used for all non-floating windows.

 This new functionality introduced problems with the recommended
configuration
 of one of my other modules (X.A.FloatSnap.) A new and more reliable method
of
 distinguishing between clicks and drags where therefore introduced in the
new
 module X.A.AfterDrag.

 This does not break any prior use of FloatSnap, but will require changes in
 configuration if used together with AvoidFloats. (This is mentioned in the
 docs for AvoidFloats and I recommend using the new configuration method
even if
 AvoidFloats is not in use.)
]
[X.L.LayoutBuilder place active on top
ankaan at gmail.com**20150306164200
 Ignore-this: 69d718d0d044ee59a877fa0e63edc474
 Make sure that the active layout area is placed on top of all other areas
when placing windows. This makes overlapping areas usable.
]
[Add rearrangers to X.A.GridSelect
Dmitri Iouchtchenko <johnnyspoon at gmail.com>**20130123044038
 Ignore-this: ef0dc68e9b725953e69e7b039fe06e9a
]
[Avoid repainting elements in X.A.GridSelect
Dmitri Iouchtchenko <johnnyspoon at gmail.com>**20130123043850
 Ignore-this: 8e926cebc8d458a06a05f7457ae40b68
]
[Give a name to the initial state in X.A.GridSelect
Dmitri Iouchtchenko <johnnyspoon at gmail.com>**20130121061324
 Ignore-this: 989ae20ccc3d5b1392f0694d5c62e759
]
[Add XMonad.Config.Bepo (Yorick Laupa)
Adam Vogt <vogt.adam at gmail.com>**20150310214314
 Ignore-this: 71dcf03f9ff80b645531004f95e9c600
]
[add instance Default WallpaperConf
Adam Vogt <vogt.adam at gmail.com>**20150310214246
 Ignore-this: 18e74f249b35726acd4b923ecce3085
]
[XMonad.Prompt.Pass: Handle hierachical password stores
Joachim Breitner <mail at joachim-breitner.de>**20150218091816
 Ignore-this: 2f0a02613780067d324b04a8cdb9c0ed

 pass stores its passwords in directories, so the contents of the directory
 store needs to be enumerated recursively. Alexander Sulfrian provided this
 patch on the mailinglist, which I tested (it works) and cleaned up
slightly.

]
[remove warnings and text dependency from H.WallpaperSetter
Adam Vogt <vogt.adam at gmail.com>**20150310192933
 Ignore-this: e637d782c13bed48bafbc1458b3f983f
]
[Added the new hook WallpaperSetter
anton.pirogov at gmail.com**20150228162335
 Ignore-this: 7cbb2ab0d8f9f606f50253deebcf4163
]
[adjust an import to fix the build
Adam Vogt <vogt.adam at gmail.com>**20150310182403
 Ignore-this: 72f67dd2cb1cc6900269383124844c2b
]
[merge conflicts in X.L.Spacing
Adam Vogt <vogt.adam at gmail.com>**20150310182046
 Ignore-this: f0830d6483d30d643e7e182e310ec042

 I should have just applied Anton Pirogov March 4 patch.
]
[Added messages to adjust the gap dynamically
anton.pirogov at gmail.com**20150304082520
 Ignore-this: 52b590c820db765796de41f38fffdf3c
]
[X.L.Spacing needs -XPatternGuards now
Adam Vogt <vogt.adam at gmail.com>**20150310181248
 Ignore-this: d6b2b76fddbd9ad066e7cb39933f055a
]
[add ConfirmPrompt (Antoine Beaupré)
Adam Vogt <vogt.adam at gmail.com>**20150310181036
 Ignore-this: 65d74f05e82c66a3ff4f021d19ceb626
]
[Added messages to adjust the gap dynamically
anton.pirogov at gmail.com**20150303210143
 Ignore-this: 891ca1ccca183d6af8e4aa4bf6d843fb
]
[add another extension to actually fix the build with ghc-7.10-RC1
Adam Vogt <vogt.adam at gmail.com>**20150124111939
 Ignore-this: 26d6f1b4cb6d573ccf49e6baeca853e4
]
[BinarySpacePartition downstream changes
benweitzman at gmail.com**20141110202259
 Ignore-this: 42ecc2b07388ba0c7b3eac980256c17b
 Pulled in changes from my repo for this layout on github (
https://github.com/benweitzman/BinarySpacePartition)
 Includes a new mode for resizing windows in a more intuitive way, also
contains a bug fix that was preventing users from
 resiving a window up.

 Includes changes from github users egasimus (Adam Avramov) and
SolitaryCipher (Nick)

]
[add XF86AudioMicMute to EZConfig (#582)
Adam Vogt <vogt.adam at gmail.com>**20141222045306
 Ignore-this: 1c91505b303e53b94da624230b3c893c
]
[Generalize new workspace addition functions to support arbitrary insertion.
nrujac at gmail.com**20141219002309
 Ignore-this: 9f8c14b5aa9d398b3f167da0af1a8650

 The current DynamicWorkspaces module only supports adding new workspaces
 at the start of the list of workspaces. This means when binding workspaces
 to keys based on the position in the list, key bindings can change
 as workspaces are added in removed in a far more destructive way than
 necessary. Instead, supporting appending and arbitrary insertion allows
 the user to determine where the new workspace should be added.

 This patch is a straight generalization of the addHiddenWorkspace'
function.
 Rather than always using `(:)` to insert the new workspace into the list
 of workspaces, this patches causes it to use an arbitrary list insertion
 function instead. A few new functions are added to prevent breakage of
 external code while exported functions are left unchanged.

 List of new functions:
   appendWorkspace
   appendWorkspacePrompt
   addWorkspaceAt
   addHiddenWorkspaceAt

 Existing functions were modified to call their generalized brethren where
possible
 without changing functionality. This patch should not change behavior for
any
 existing users of this module.

]
[address another bitSize/finiteBitSize warning
Adam Vogt <vogt.adam at gmail.com>**20141222033300
 Ignore-this: 549e519d25080c77e605dc983f0d239e
]
[X.L.Master: Add FixMaster layout modifier
Anton Vorontsov <anton at enomsg.org>**20141220011339
 Ignore-this: 82e9736853287f753248af41843ceb6b

 This layout modifier is useful for the case if you desire to add a master
 pane that has fixed width (it's fixed even if there is just one window
 opened). Especially nice feature if you don't want to have too wide
 terminal in a master pane.

 The layout is implemented as an addition to Master layout, so it reuses
 most of the code.
]
[filepath dependency for P.Pass was left out
Adam Vogt <vogt.adam at gmail.com>**20141221214129
 Ignore-this: 98e63d7b17ac6ebabd8a6b081f5194a1
]
[remove unused imports
Adam Vogt <vogt.adam at gmail.com>**20140815051234
 Ignore-this: b2e5be31b70e6d31827e76bd8c00d200
]
[fix build with ghc-6.12
Adam Vogt <vogt.adam at gmail.com>**20140815051214
 Ignore-this: d4c4da527db6c8affc151dc210631b85
]
[use FiniteBitSize with ghc >= 7.8
Adam Vogt <vogt.adam at gmail.com>**20140815051136
 Ignore-this: 90f855fd72406fb3d2640a133d499188
]
[Layout.Spacing: Outer window edges now get as much spacing as inner ones
Felix Crux <felixc at felixcrux.com>**20141219223646
 Ignore-this: 61363e97939fe857876c8252ac5f0302

 Layout.Spacing applies a customizable amount of space around the outside
of each
 window. At window edges where two windows meet, the total distance between
them
 is therefore twice the customized value (one space value from each
window). At
 the edge of the screen, however, the spacing is only applied once. This
results
 in uneven amounts of spacing and differently-sized gaps on the screen.

 This patch extends the Spacing layout to include a further gap all around
the
 edge of the screen, thus making all spaces around windows equal in size.

]
[add filepath package dependency needed by Prompt.Pass
Adam Vogt <vogt.adam at gmail.com>**20140909145216
 Ignore-this: 588ec76e7fccb4219361da7024c98db4

 filepath comes with ghc, and it's used by xmonad-core anyways
]
[X.C.Prime: doc tweaks
Devin Mullins <devin.mullins at gmail.com>**20141002075939
 Ignore-this: 20d6b829b810f48b5e4b4c161b39b312
]
[X.A.Navigation2D: add convenience functions for setting config &
keybindings
Devin Mullins <devin.mullins at gmail.com>**20141002075757
 Ignore-this: ed01137f03a531f73315ed503d1eb6ef
 1. Added 'additionalNav2DKeys' which adds keybindings for the cartesian
product
    of direction keys and (modifier, action) pairs given.
 2. Added 'navigation2D' which combines that with 'withNavigation2DConfig'.
 3. Added 'additionalNav2DKeysP' and 'navigation2DP' which do the same, but
use
    the 'additionalKeysP' syntax.
]
[X.C.Prime: doc fixes
Devin Mullins <devinmullins at gmail.com>**20141001075855
 Ignore-this: dbbe00791b04df61dcd595c50333fba
]
[X.C.Prime: add 'withScreens' and friends
Devin Mullins <devinmullins at gmail.com>**20141001075250
 Ignore-this: eba37b1ff3da265a4dcc509f538fce4d
 The screen equivalent of 'withWorkspaces' lets you more easily define keys
that
 move/swap between screens.

 Also, rename wsKeyspecs to wsKeys, and make a couple of doc tweaks.
]
[Implement proper handling of dynamically changing hostname
Anton Vorontsov <anton at enomsg.org>**20140901072158
 Ignore-this: 2aeac6d2161e666d40cda6a09f78b208

 The module implements a proper way of finding out whether the window is
 remote or local.

 Just checking for a hostname and WM_CLIENT_MACHINE being equal is often
 not enough because the hostname is a changing subject (without any
 established notification mechanisms), and thus WM_CLIENT_MACHINE and the
 hostname can diverge even for a local window.

 This module solves the problem. As soon as there is a new window created,
 we check the hostname and WM_CLIENT_MACHINE, and then we cache the result
 into the XMONAD_REMOTE property.

 Notice that XMonad itself does not know anything about hostnames, nor does
 it have any dependency on Network.* modules. For this module it is not a
 problem: you can provide a mean to get the hostname through your config
 file (see usage). Or, if you don't like the hassle of handling dynamic
 hostnames (suppose your hostname never changes), it is also fine: this
 module will fallback to using environment variables.
]
[Add Stoppable layout for power saving
Anton Vorontsov <anton at enomsg.org>**20140901072141
 Ignore-this: a52805d9f3095cd7af48507847ed2fe3

 This module implements a special kind of layout modifier, which when
 applied to a layout, causes xmonad to stop all non-visible processes. In a
 way, this is a sledge-hammer for applications that drain power. For
 example, given a web browser on a stoppable workspace, once the workspace
 is hidden the web browser will be stopped.

 Note that the stopped application won't be able to communicate with X11
 clipboard. For this, the module actually stops applications after a
 certain delay, giving a chance for a user to complete copy-paste sequence.
 By default, the delay equals to 15 seconds, it is configurable via
 'Stoppable' constructor.

 The stoppable modifier prepends a mark (by default equals to "Stoppable")
 to the layout description (alternatively, you can choose your own mark and
 use it with 'Stoppable' constructor). The stoppable layout (identified by
 a mark) spans to multiple workspaces, letting you to create groups of
 stoppable workspaces that only stop processes when none of the workspaces
 are visible, and conversely, unfreezing all processes even if one of the
 stoppable workspaces are visible.

 To stop the process we use signals, which works for most cases. For
 processes that tinker with signal handling (debuggers), another
 (Linux-centric) approach may be used. See
 https://www.kernel.org/doc/Documentation/cgroups/freezer-subsystem.txt
]
[X.C.Prime: doc changes
Devin Mullins <devinmullins at gmail.com>**20140925203037
 Ignore-this: 51204c1a9f2e6ed21228d2910417fd21
]
[X.C.Prime: add withWorkspaces et al.
Devin Mullins <devinmullins at gmail.com>**20140925203034
 Ignore-this: 65f691270110cc5de13c950d9dcb0c17
 This allows easier configuration of workspaces and their keybindings.
Required
 generalizing the 'Prime' type, so lots of other lines changed in rather
trivial
 ways.
]
[X.C.Prime: add ifThenElse binding
Devin Mullins <devinmullins at gmail.com>**20140924191509
 Ignore-this: ae775c418c27301b9c12d2a233502cec
 This is necessary for if-then-else support in the user's config.
]
[X.C.Prime: doc fixes
Devin Mullins <devinmullins at gmail.com>**20140915080601
 Ignore-this: 15e3c445a99d3b2d3a235aa76119797
]
[X.C.Prime: fix 'def' hyperlink in doc
Devin Mullins <devinmullins at gmail.com>**20140914075352
 Ignore-this: a1de1d81a5f140ab7d90edbf393e9bda
]
[XMonad.Config.Prime, a do-notation for config
Devin Mullins <devinmullins at gmail.com>**20140914064828
 Ignore-this: f7397aa6e6efe5d76acebfa22c567baa
 Note that the use of RebindableSyntax is because of the need to vary the
 layoutHook type throughout the config. The alternative, using the
existential
 Layout type, was rejected because it required TemplateHaskell in order to
look
 nice, and TemplateHaskell is not portable.

 I've tried to make a version of (>>) that also worked on normal monads, but
 have had no luck as of yet. Maybe some intrepid soul can add it later.
]
[X.P.Shell: fix doc typo
me at twifkak.com**20130317115516
 Ignore-this: bdd385a9142ed039a917d135e76293fe
]
[reverse workspaces, so that switching to a dynamic workspace group
restores the focus to the screen that was focused at group creation time
nwfilardo at gmail.com**20140913174118
 Ignore-this: b74c02b1892159694827e35122c2d517
]
[add filepath dependency, needed by new X.P.Pass module
me at twifkak.com**20140913070926
 Ignore-this: fec97086c1e66cf8a036265bd1a970a8
]
[add-new-xmonad-prompt-pass
eniotna.t at gmail.com**20140829131928
 Ignore-this: 11e85dfe3d24cef88d8d89f4e7b1ec0b
 This module provides 3 <XMonad.Prompt> to ease passwords manipulation
(generate, read, remove):

 - one to lookup passwords in the password-storage.

 - one to generate a password for a given password label that the user
inputs.

 - one to delete a stored password for a given password label that the user
inputs.

 All those prompts benefit from the completion system provided by the
module <XMonad.Prompt>.

 The password store is setuped through an environment variable
PASSWORD_STORE_DIR.
 If this is set, use the content of the variable.
 Otherwise, the password store is located on user's home
@$HOME\/.password-store at .


 Source:

 - The password storage implementation is <
http://git.zx2c4.com/password-store the password-store cli>.

 - Inspired from <http://babushk.in/posts/combining-xmonad-and-pass.html>
]
[use Data.Map instead of Data.Map.Strict to support containers < 0.5
Adam Vogt <vogt.adam at gmail.com>**20140815043141
 Ignore-this: 436d18657d8499f4ce57311e84503d9f
]
[config-mate
allbery.b at gmail.com**20140803020659
 Ignore-this: d5de258c0a28cd5ba64a59cf37cd480a
 Initial support for the Mate desktop environment (http://mate-desktop.org).
 Based on existing Gnome 2 support, since Mate is a maintained fork of
 Gnome 2.
]
[debug-managehook
allbery.b at gmail.com**20140803020601
 Ignore-this: 51f9255b496cca79e4a53e274c400ecc
 A set of hooks, and convenience combinators, to help with ManageHook
debugging.
 Ordinary users may well want to use debugManageHookOn in normal configs,
 specifying a key sequence which can be pressed before running a command in
 order to capture debug information just for that command's main window.

 This is especially useful when trying to diagnose issues such as programs
 that do not play well with SpawnOn, or ManageHook matching on 'title' when
 the program does not set the window title until after it is mapped.
]
[debug-debug
allbery.b at gmail.com**20140803020530
 Ignore-this: cbb2b1d99293e3a4d02a256c2733aeb0
 Various fixes and enhancements to DebugWindow and DebugStack. ManageDebug
 requires these fixes, but some of them are significant even if not using
 ManageDebug.
]
[derive Applicative instances to suppress AMP warning
Adam Vogt <vogt.adam at gmail.com>**20140710163950
 Ignore-this: c2110d07bccc61462c3fbf73c900aaa1
]
[clean up cabal file and drop support for base < 3
Adam Vogt <vogt.adam at gmail.com>**20140710013255
 Ignore-this: 76b142e2b114604feac9b8e41cf71ab
]
[add-duck-duck-go-search-engine
eniotna.t at gmail.com**20140617174246
 Ignore-this: 29bbfb2d07d9ddf36bf0268a4e255f81
]
[XSelection: getSelection: fix connection exhaustion bug (issue #573);
include warning
gwern at gwern.net**20140601025019
 Ignore-this: add21190fc07338b243c2241cc746119
]
[Fix dbus-send call in XMonad.Config.Gnome
md143rbh7f at gmail.com**20140129032114
 Ignore-this: ed62458b55c8b34b77f73027eeee1a73
 dbus-send --print-reply=string is invalid, but it was silently ignored
until recently:

http://cgit.freedesktop.org/dbus/dbus/commit/tools/dbus-send.c?id=c690ee4351f99ed5e629ffcf5f4a2edcd418d103
 I've changed XMonad.Config.Gnome to run --print-reply=literal, since
that's what the old behavior was.
]
[warning police (unused variables)
Adam Vogt <vogt.adam at gmail.com>**20140505001242
 Ignore-this: a15b4d844b1da4f1f1f9b6095c968705
]
[This patch makes the Ssh extension works with **user** arguments in ssh,
.e.g ssh admin at localhost.
linxray at gmail.com**20140504091120
 Ignore-this: 297673e11d3049c4f127aac3e172d361
]
[remove trailing whitespace in L.BinarySpacePartition
Adam Vogt <vogt.adam at gmail.com>**20140501011943
 Ignore-this: 8dd677978992e0854801b8f254463dc2
]
[replace Bound with the equivalent Direction2D
Adam Vogt <vogt.adam at gmail.com>**20140501011540
 Ignore-this: b1f1c256aba07f70918fe1d693c8087b
]
[remove unused extension in BSP
Adam Vogt <vogt.adam at gmail.com>**20140501011455
 Ignore-this: a4962486b2aa3980536bff19a537451e
]
[Add BinarySpacePartition layout
benweitzman at gmail.com**20140430205848
 Ignore-this: a85d1dc51bf54c59ae2bd9d948cc1088
]
[X.Actions.DynamicWorkspaceGroups: export new function addRawWSGroup
Brent Yorgey <byorgey at cis.upenn.edu>**20140428142901
 Ignore-this: a487882c9571bf91ff921d6561bb4cc6
]
[Remove unneeded context with the IfMax layout instance
Adam Vogt <vogt.adam at gmail.com>**20140422221105
 Ignore-this: 3b8ac316f56df6a84420754db769fb0

 Extra constraints on instances are about as useful as -XDataTypeContexts
]
[Adding side tabs and replacing TabbarLocation with Direction2D.
nrujac at gmail.com**20140219200811
 Ignore-this: edabeec973b4e0d61515818367689843
]
[warning police
Daniel Wagner <daniel at wagner-home.com>**20140316183747
 Ignore-this: fd16435ccdd3fee8924723cc690cc239
]
[New module: XMonad.Util.WindowState
Dmitry Bogatov <KAction at gnu.org>**20140218100229
 Ignore-this: 14a6fa263c423cd8cca3b2645b3930d7

 Save almost arbitary data per window
]
[Add side tabs to the tabbed layout.
nrujac at gmail.com**20140213215247
 Ignore-this: f81bafe9cb75a30ed6bbbe68cf5d66c0
]
[SpawnNamedPipe hlint cleanup
cwills.dev at gmail.com**20140202213613
 Ignore-this: dbb68c4c5522026bd108d0158e747b48
]
[document and cleanup SpawnNamedPipe
cwills.dev at gmail.com**20140202211000
 Ignore-this: b264278f1f1ab1f18b37245a5ff33136
]
[Added SpawnNamedPipe
cwills.dev at gmail.com**20140202143415
 Ignore-this: 87797ffffc8d0fd088482bd0c5baf0e
]
[Make commandToComplete in XMonad.Prompt.Shell complete last word
md143rbh7f at gmail.com**20140130200050
 Ignore-this: b0fe22fdd7b9409835fd0ca069f2e01a

 The following change from 2013-02-09 breaks shell completion for me:
     hunk ./XMonad/Prompt/Shell.hs 65
     +    commandToComplete _ c = c

 It seems to be passing the entire string into compgen in order to get the
file completions, but it should only pass the last word. I propose
reverting this change. Comments are appreciated.
]
[expose and document X.L.IndependentScreens.marshallSort
Daniel Wagner <daniel at wagner-home.com>**20140128212844
 Ignore-this: 90c1437c6ffe1dbd8f4a4ed192097ec
]
[ServerMode properly indent
Adam Vogt <vogt.adam at gmail.com>**20131219201440
 Ignore-this: 761b39c3e3c90b6123f068e8b1d34e5d
]
[remove ServerMode tabs
Adam Vogt <vogt.adam at gmail.com>**20131219201000
 Ignore-this: f21448c248ec0ac289c309ed964ebcff
]
[fix -Wall ServerMode
Adam Vogt <vogt.adam at gmail.com>**20131219181030
 Ignore-this: 708dd5fc60f43dee3d1da085002052f
]
[documentation note that ServerMode is similar to wmctrl
Adam Vogt <vogt.adam at gmail.com>**20131219180748
 Ignore-this: 3215bdf1c698c798eca8ed7f62a0f591
]
[Generalized XMonad.Hooks.ServerMode
polson2 at hawk.iit.edu**20131216025100
 Ignore-this: e58da3b168a1058f32982833ea25a739
]
[IfMax-Layout
Ilya Portnov <portnov84 at rambler.ru>**20131201072634
 Ignore-this: dac53f2a0505e740f05fdf03f1db0c21
 This adds a new ("conditional") layout, IfMax, which simply runs one
layout, if there are <= N windows, and else runs another layout.
]
[fix UrgencyHook and add filterUrgencyHook
Adam Vogt <vogt.adam at gmail.com>**20130924224738
 Ignore-this: 3b7c62275701e6758397977c5c09b744
]
[export XMonad.Hooks.UrgencyHook.clearUrgency (issue 533)
Adam Vogt <vogt.adam at gmail.com>**20130923031349
 Ignore-this: dafe5763d9abcfa606f5c1a8cf5c57d6
]
[minor documentation fix: manageDocks doesn't do anything with struts, so
don't claim it does
Daniel Wagner <daniel at wagner-home.com>**20130814125106
 Ignore-this: a2610d6c1318ac0977abfc21d1b91632
]
[don't pretend to be LG3D in X.C.Dmwit because this confuses modern GTK
Daniel Wagner <daniel at wagner-home.com>**20130813211636
 Ignore-this: 8f728dc1b4bf5e472d99419cc5920e51
]
[XMonad.Actions.UpdatePointer: generalise updatePointer
Liyang HU <git at liyang.hu>**20130730071007
 Ignore-this: 3374a62b6c63dcc152dbf843cd0577f0

]
[XMonad.Actions.UpdatePointer: document TowardsCentre
Liyang HU <git at liyang.hu>**20130730053746
 Ignore-this: 2d684b12e4fff0ebec254bea4a4546a3

]
[Haddock formatting in H.Minimize
Adam Vogt <vogt.adam at gmail.com>**20130723155658
 Ignore-this: 5db3186a51dec58f78954466ded339cb
]
[Bump version (and xmonad dependency) to 0.12
Adam Vogt <vogt.adam at gmail.com>**20130720205857
 Ignore-this: ce165178ca916223501f266339f1de39

 This makes a breakage due to missing patches in core a bit more obvious.
 Previously you would have a build failure regarding some missing
identifiers
 (def re-exported by XMonad from Data.Default), while after applying this
patch
 it will be clear that xmonad-core needs to be updated.
]
[Fix issue 551 by also getting manpath without -g flag.
Adam Vogt <vogt.adam at gmail.com>**20130716030536
 Ignore-this: ded2d51eb7b7697c0fdfaa8158d612df

 Instead of taking Ondrej's approach of figuring out which man (man-db or
 http://primates.ximian.com/~flucifredi/man/) is used by the system, just
try
 both sets of flags.
]
[Escape dzen markup and remove xmobar tags from window titles by default.
Adam Vogt <vogt.adam at gmail.com>**20130708144813
 Ignore-this: cf56bff752fbf78ea06d5c0cb755f615

 The issue was that window titles, such as those set by, for example a
browser,
 could set the window title to display something like

    <action=malicious shell command>normal title</action>

 Which could be executed by xmobar (or dzen).

 This adds a ppTitleSanitize which does the above functions. This way when
users
 override ppTitle, the benefits are not lost.

 Thanks to Raúl Benencia and Joachim Breitner for bringing this to my
attention.
]
[DynamicBars-use-ExtensibleState
gopsychonauts at gmail.com**20130618074755
 Ignore-this: afacba51af2be8ede65b9bcf9b002a7

 Hooks.DynamicBars was previously using an MVar and the unsafePerformIO
hack (
 http://www.haskell.org/haskellwiki/Top_level_mutable_state ) to store bar
 state. Since ExtensibleState exists to solve these sorts of problems, I've
 switched the file over to use unsafePerformIO instead.

 Some functions' types had to be changed to allow access to XState, but the
 public API is unchanged.

]
[Catch exceptions when finding commands on PATH in Prompt.Shell
Thomas Tuegel <ttuegel at gmail.com>**20130616230219
 Ignore-this: 5a4d08c80301864bc14ed784f1054c3f
]
[Fix haddock parse error in X.A.LinkWorkspaces
Adam Vogt <vogt.adam at gmail.com>**20130528133448
 Ignore-this: 42f05cf8ca9e6d1ffae3bd20666d87ab
]
[use Data.Default wherever possible, and deprecate the things it replaces
Daniel Wagner <daniel at wagner-home.com>**20130528013909
 Ignore-this: 898458b1d2868a70dfb09faf473dc7aa
]
[eliminate references to defaultConfig
Daniel Wagner <daniel at wagner-home.com>**20130528005825
 Ignore-this: 37ae613e4b943e99c5200915b9d95e58
]
[minimal change needed to get xmonad-contrib to build with xmonad's
data-default patch
Daniel Wagner <daniel at wagner-home.com>**20130528001040
 Ignore-this: 291e4f6cd74fc2b808062e0369665170
]
[Remove unneeded XSync call in Layout.ShowWName
Francesco Ariis <fa-ml at ariis.it>**20130517153341
 Ignore-this: 4d107c680572eff464c8f6ed9fabdd41
]
[Remove misleading comment: we definitely don't support ghc-6.6 anymore
Adam Vogt <vogt.adam at gmail.com>**20130514215851
 Ignore-this: 2d071cb05709a16763d039222264b426
]
[Fix module name in comment of X.L.Fullscreen
Adam Vogt <vogt.adam at gmail.com>**20130514215727
 Ignore-this: cb5cf18c301c5daf5e1a2527da1ef6bf
]
[Minor update to cabal file (adding modules & maintainership)
Adam Vogt <vogt.adam at gmail.com>**20130514215632
 Ignore-this: 82785e02e544e1f797799bed5b5d9be2
]
[Remove trailing whitespace in X.A.LinkWorkspaces
Adam Vogt <vogt.adam at gmail.com>**20130514215421
 Ignore-this: 5015ab4468e7931876eb66b019af804c
]
[Update documentation of LinkWorkspaces Module
quesel at informatik.uni-oldenburg.de**20110328072813
 Ignore-this: da863534931181f551c9c54bc4076c05
]
[Added a module for linking workspaces
quesel at informatik.uni-oldenburg.de**20110210165018
 Ignore-this: 1dba2164cc3387409873d33099596d91

 This module provides a way to link certain workspaces in a multihead setup.
 That way, when switching to the first one the other heads display the
linked
 workspaces.
]
[Cache results from calcGap in ManageDocks
Adam Vogt <vogt.adam at gmail.com>**20130425155811
 Ignore-this: e5076fdbdfc68bc159424dd4e0f14456

 http://www.haskell.org/pipermail/xmonad/2013-April/013670.html
]
[Remove unnecessary contexts from L.MultiToggle
Adam Vogt <vogt.adam at gmail.com>**20130217163356
 Ignore-this: 6b0e413d8c3a58f62088c32a96c57c51
]
[Generalises modWorkspace to take any layout-transforming function
gopsychonauts at gmail.com**20130501151425
 Ignore-this: 28c7dc1f6216bb1ebdffef5434ccbcbd

 modWorkspace already was capable of modifying the layout with an arbitrary
 layout -> layout function, but its original type restricted it such that it
 could only apply a single LayoutModifier; this was often inconvenient, as
for
 example it was not possible simply to compose LayoutModifiers for use with
 modWorkspace.

 This patch also reimplements onWorkspaces in terms of modWorkspaces, since
with
 the latter's less restrictive type this is now possible.
]
[since XMonad.Config.Dmwit mentions xmobar, we should include the
associated .xmobarrc file
Daniel Wagner <daniel at wagner-home.com>**20130503194055
 Ignore-this: 2f6d7536df81eb767262b79b60eb1b86
]
[warning police
Daniel Wagner <daniel at wagner-home.com>**20130502012700
 Ignore-this: ae7412ac77c57492a7ad6c5f8f50b9eb
]
[XMonad.Config.Dmwit
Daniel Wagner <daniel at wagner-home.com>**20130502012132
 Ignore-this: 7402161579fd2e191b60a057d955e5ea
]
[minor fixes to the haddock markup in X.L.IndependentScreens
Daniel Wagner <daniel at wagner-home.com>**20130411193849
 Ignore-this: b6a139aa43fdb39fc1b86566c0c34c7a
]
[add whenCurrentOn to X.L.IndependentScreens
Daniel Wagner <daniel at wagner-home.com>**20130408225251
 Ignore-this: ceea3d391f270abc9ed8e52ce19fb1ac
]
[Allow to specify the initial gaps' states in X.L.Gaps
Paul Fertser <fercerpav at gmail.com>**20130222072232
 Ignore-this: 31596d918d0050e36ce3f64f56205a64
]
[should bump X11 dependency, too, to make sure we have getAtomName
Daniel Wagner <daniel at wagner-home.com>**20130225180527
 Ignore-this: 260711f27551f18cc66afeb7b4846b9f
]
[getAtomName is now defined in the X11 library
Daniel Wagner <daniel at wagner-home.com>**20130225180323
 Ignore-this: 3b9e17c234679e98752a47c37132ee4e
]
[Allow to limit maximum row count in X.Prompt completion window
Paul Fertser <fercerpav at gmail.com>**20130221122050
 Ignore-this: 923656f02996f2de2b1336275392c5f9

 On a keyboard-less device (such as a smartphone), where one has to use
 an on-screen keyboard, the maximum completion window height must be
 limited to avoid overlapping the keyboard.
]
[Note in U.NameActions that xmonad core can list default keys now
Adam Vogt <vogt.adam at gmail.com>**20130217233026
 Ignore-this: 937bff636fa88171932d5192fe8e290b
]
[Export U.NamedActions.addDescrKeys per evaryont's request.
Adam Vogt <vogt.adam at gmail.com>**20130217232619
 Ignore-this: a694a0a3ece70b52fba6e8f688d86344
]
[Add EWMH DEMANDS_ATTENTION support to UrgencyHook.
Maarten de Vries <maarten at de-vri.es>**20130212181229
 Ignore-this: 5a4b314d137676758fad9ec8f85ce422

 Add support for the _NET_WM_STATE_DEMANDS_ATTENTION atom
 by treating it the same way as the WM_HINTS urgency flag.

]
[Unconditionally set _NET_WORKAREA in ManageDocks
Adam Vogt <vogt.adam at gmail.com>**20130117180851
 Ignore-this: 9f57e53fba9573d8a92cf153beb7fe7a
]
[spawn command when no completion is available (if alwaysHighlight is
True); changes commandToComplete in Prompt/Shell to complete the whole word
instead of using getLastWord
c.lopez at kmels.net**20130209190456
 Ignore-this: ca7d354bb301b555b64d5e76e31d10e8
]
[order-unindexed-ws-last
matthewhague at zoho.com**20120703222726
 Ignore-this: 4af8162ee8b16a60e8fd62fbc915d3c0

 Changes the WorkspaceCompare module's comparison by index to put
workspaces without an index last (rather than first).
]
[SpawnOn modification for issue 523
Adam Vogt <vogt.adam at gmail.com>**20130114014642
 Ignore-this: 703f7dc0f800366b752f0ec1cecb52e5

 This moves the function to help clean up the `Spawner' to the ManageHook
 rather than in functions like spawnOn. Probably it makes no difference, the
 reason is because there's one manageSpawn function but many different so
this
 way there are less functions to write.
]
[Update L.TrackFloating.useTransient example code
Adam Vogt <vogt.adam at gmail.com>**20130112041239
 Ignore-this: e4e31cf1db742778c1d59d52fdbeed7a

 Suggest useTransient goes to the right of trackFloating which is the
 configuration actually tested.
]
[Adapt ideas of issue 306 patch to a new modifier in L.TrackFloating
Adam Vogt <vogt.adam at gmail.com>**20130112035701
 Ignore-this: d54d27b71b97144ef0660f910fd464aa
]
[Make X.A.CycleWS not rely on hidden WS order
Dmitri Iouchtchenko <johnnyspoon at gmail.com>**20130109023328
 Ignore-this: 8717a154b33253c5df4e9a0ada4c2c3e
]
[Add X.H.WorkspaceHistory
Dmitri Iouchtchenko <johnnyspoon at gmail.com>**20130109023307
 Ignore-this: c9e7ce33a944facc27481dde52c7cc80
]
[Allow removing arbitrary workspaces
Dmitri Iouchtchenko <johnnyspoon at gmail.com>**20121231214343
 Ignore-this: 6fce4bd3d0c5337e5122158583138e74
]
[Remove first-hidden restriction from X.A.DynamicWorkspaces.removeWorkspace'
Dmitri Iouchtchenko <johnnyspoon at gmail.com>**20121231214148
 Ignore-this: 55fb0859e9a5f476a834ecbdb774aac8
]
[Add authorspellings file for `darcs show authors'.
Adam Vogt <vogt.adam at gmail.com>**20130101040031
 Ignore-this: c3198072ebc6a71d635bec4d8e2c78fd

 This authorspellings file includes a couple people who've contributed to
xmonad
 (not XMonadContrib). When people have multiple addresses, the most recent
one
 has been picked.
]
[TAG 0.11
Adam Vogt <vogt.adam at gmail.com>**20130101014231
 Ignore-this: 57cf32412fd1ce912811cb7fafe930f5
]
Patch bundle hash:
a028a7816d7ae8b3965477f94af4d3a1f7f92a13


-- 
brandon s allbery kf8nh                               sine nomine associates
allbery.b at gmail.com                                  ballbery at sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/xmonad/attachments/20150414/3f8a82cb/attachment-0001.html>


More information about the xmonad mailing list