[xmonad] [patch] Dynamic window property matching

Joe M joe9mail at gmail.com
Fri Apr 17 19:33:23 UTC 2015


Thanks, Now I can get my browser windows to move to a particular workspace.

Brandon Allbery wrote:
> 1 patch for repository http://code.haskell.org/XMonadContrib:
>
> Fri Apr 10 15:34:49 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**20150410193449
>  Ignore-this: 7f58cbd7fadeffa96a3b635d14a51d4b
>  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, 2014
> +-- 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
> +
> +-- | 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:
> 670d7e477470a517eb62278dd012400269244bdc
>
>
> --
> brandon s allbery kf8nh                               sine nomine associates
> allbery.b at gmail.com                                  ballbery at sinenomine.net
> unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net

> _______________________________________________
> xmonad mailing list
> xmonad at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://mail.haskell.org/pipermail/xmonad/attachments/20150417/b56bcf54/attachment-0001.sig>


More information about the xmonad mailing list