utf8-string isn't needed since d9e3ebf53194d1cf02bae28f0c885b5c75610cfa
(late 2014).
Most of the executable xmonad deps are unnecessary since
307b82a53d519f5c86c009eb1a54044a616e4a5c (early 2015).
Switch from data-default to data-default-class to avoid bringing in deps
and instances we don't need.
In some shells—like bash—the entire help message is shown in a single
line because a newline is printed as a literal "\n" character when using
echo. Some distributions[1] have /bin/sh linked to bash, and so new
users are likely to run into this at some point.
We could fix this by either removing show and explicitly adding an
escaped quotation symbol before and after the string, or by using printf
instead of echo. The printf solution seems more portable[2] and so I
propose we go with that one.
[1]: f5b9a25cdd/nixos/modules/config/shells-environment.nix (L129-L143)
[2]: https://unix.stackexchange.com/questions/65803/why-is-printf-better-than-echo/#65819
It's often difficult to make contrib modules work together. When one
depends on a functionality of another, it is often necessary to expose
lots of low-level functions and hooks and have the user combine these
into a complex configuration that works. This is error-prone, and
arguably a bad UX in general.
This commit presents a simple solution to that problem inspired by
"extensible state": extensible config. It allows contrib modules to
store custom configuration values inside XConfig. This lets them create
custom hooks, ensure they hook into xmonad core only once, and possibly
other use cases I haven't thought of yet.
For more, see the related pull request to xmonad-contrib.
Related: https://github.com/xmonad/xmonad-contrib/pull/547
xmonad floats mplayer by default. However, Debian has switched to
mplayer2, and so on upgrade, it will stop floating. This can be easily
fixed in the user's config file, but here is a patch that avoids
bothering the user with breakage on upgrade.