|
xmonadcontributed code |
aboutThird party config settings and scripts to xmonad are collected in the xmonad contrib darcs repository. This package collects Haskell extensions to Config.hs, and also external scripts and programs that work with xmonad. If extensions are simple, and clean, they're sometimes moved into the core xmonad code. Such extensions are also listed here: extensions to the coreThe following extensions are now available by default in xmonad: Popup statusbarUse mod-b to raise or lower a 'gap' on any (or all) edges of the screen. This is suitable for running a dzen (or other) status bar in. You may place gaps on any edge of the screen, and have different gaps on different physical screens. Some examples: The first screenshot shows a dzen status bar obtained by adding the following to a .xsession file:
status | dzen2 -p -ta r -fg '#a8a3f7' -bg '#3f3c6d' \
-fn '-xos4-terminus-medium-r-normal--16-160-72-72-c-80-iso8859-1' &
/home/dons/bin/xmonad
Where 'status' prints the load and other data to stdout. Here's a screenshot of KDE's kicker status bar running at the bottom of the xmonad screen (!) Floating layerxmonad versions after 0.2 support a floating layer per workspace. Clients may be raised into the floating layer, where they are sized and moved manually, or sunk back to the tiling layer, where the automated window management takes over. Here's a screenshot of a single floating window over a tiled layer, with a dzen status bar. Status bar informationxmonad versions after 0.2 supports logging of their internal state, via logging hooks in Config.hs. Rather than build in a status bar, xmonad delegates that to external tools (such as dzen). A useful logHook would print out to stdout the exactly string you want displayed in an dzen status bar. An example dzen instance showing dynamically tagged workspaces, and another with a coloured cpu speed meter. Logging is enabled by specifying a logHook functions in Config.hs (by default it is a no-op). On each state change, the logHook will run, and can do just about anything. See the dynamic logging logHook, for an example. IncMasterIncMaster, (now in the core), use mod-comma and mod-period to increase or decrease the number of windows stored in the master pane. Here, for example: XRandR/rescreen
Rescreen. randr support for extracting screen information.
The xrandr extension is supported, allowing multiple screens
to be added, removed or rotated on the fly. See
xcompmgrSee this screenshot of composite support, for highlight/shadows on the focused windows, and also an example of 'transset' (for transparent windows), plus shadowing: contributed extensionsThe following extensions are available from the contrib package. They are usually not written by the xmonad authors, and are unaudited for stability. Mosaic tilingMosaic tiling, by David Roundy, adjustable windows and equal window area tiling. Screenshots below show gimp being used, with hidden windows, and configuring xmonad itself. Spiral tilingSpiral, by Joe Thornber, a fibonacci spiral layout algorithm, like below: Circle tilingCircle, an elliptical, overlapping layout, by Peter De Wachter: Combining layoutsCombo, a layout for combining layouts, by David Roundy. Here, an example with with twoPane and tabbed layouts in separate panes: Other contributed extensions
using contributed extensionsHere's an example of how to use an extension from the contrib repo. First, download the extensions into your xmonad repo:
We'll use the 'SimpleDate' extension, which prints the current date in a popup status bar using dzen2.
To use the SimpleDate.hs module, simply import it into your
Config.hs:
and then add a key binding:
Now recompile xmonad as usual, and reload:
and hit mod-q to reload. The simple date menu is now bound to mod-d! contributingIf you have developed a nice feature for xmonad for people to use from their config files, please send us the code as a darcs patch to the contrib repository. To do this, download the contrib repo into your xmonad directory. Then put your code under XMonadContrib, following the examples provided in the repo. To send the patch use 'darcs send' to mail it to the xmonad@ list. |