Simple extensions of the pretty printer to differentiate between empty
and non-empty visible workspaces. Analogical to the existing
functionality for hidden workspaces. Particularly useful if some
displays managed by xmonad are turned off temporarily.
The new 'ppVisibleNoWindows' function was wrapped in a Maybe data type.
Its value dafaults to 'Nothing' and 'ppVisible' is used as fallback.
This commit adds `dzenWithFlags` function for users who wish to change the
command line arguments passed to `dzen`. The behaviour of `dzen` function is
kept the same.
As it now consists of a startup hook, a manage hook, an event hook and
a layout modifier, and behaves erratically when any one component is not
included in a user's config (which happens to be the case for all
configs from xmonad-contrib 0.12 since the startup hook is a new
inclusion), it's probably wise to have a single function that adds
all the hooks to the config instead.
NB: This will need a release notes entry anyway!
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.
Currently, the ppUrgent method is an addition to the ppHidden method.
This doesn't make any sense since it is in fact possible to get urgent
windows on the current and visible screens. So I've raised the ppUrgent
printer to be above ppCurrent/ppVisible and dropped its dependency on
ppHidden.
In addition to that this makes it a lot more easier to define a more
custom ppUrgent printer, since you don't have to "undo" the ppHidden
printer anymore. This also basicly removes the need for dzenStrip,
although I just changed the description.
-- McManiaC / Nils
Most users would expect workspaces with urgent windows to be highlighted in
xmobar when they set up an UrgencyHook. Hence, doing this by default in xmobarPP
makes sense. (dzenPP does the same)
This function was written by Wirt Wolff. This change should allow UrgencyHook
to work out of the box with dzen and dzenPP, rather than the colours being
overridden so even though UrgencyHook is working, it doesn't change colours.
Someone forgot to check if her patch was going to break haddock docs
generation or not. So, while I was recording a patch with quite a long
description I had to manually write - sound strange? -, I found out
that my patch did not pass the tests, because of this haddock problem
left behind.
And so I fixed it, recorded this patch, with the hope the my next
description of the next patch I'm going to record will survive the
test suite we created to avoid this kind of problems for.
Improvements to DynamicLog include:
* Greatly expanded and improved documentation and examples
* remove seemingly useless makeSimpleDzenConfig function
* factor out xmobarPP
* add new ppExtras field to PP record, for specifying 'extra'
loggers which can supply information other than window title,
layout, and workspace status to a status bar (for example, time and date,
battery status, mail status, etc.)
The new XMonad.Util.Loggers module provides some example loggers that
can be used in the new ppExtras field of the PP record. Create your own,
add them to this module, go crazy! =)
* Export WorkspaceCompare and WorkspaceSort types.
* Extract commonality in sort methods into mkWsSort, which creates
a workspace sort from a workspace comparison function.
* Rename getSortByTag to getSortByIndex, since it did not actually sort
by tag at all; it sorts by index of workspace tags in the user's config.
* Create a new getSortByTag function which actually does sort
lexicographically by tag.
* Enhance documentation.
algorithm
- idea is to specify sorting algorithm from user's xmonad.hs
- xinerama sorting algorithm produces same ordering as
pprWindowSetXinerama
- default ppSort is set to getSortByTag, so the default functionality
is the same as it was before