A desktop bar similar to xmobar, but with more GUI http://github.com/travitch/taffybar

Latest on Hackage:0.4.6

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

BSD3 licensed by Tristan Ravitch
Maintained by tristan@nochair.net

This is a desktop information bar intended for use with XMonad and similar window managers. It is similar in spirit to xmobar; it is different in that it gives up some simplicity for a reasonable helping of eye candy. This bar is based on GTK+ (via gtk2hs) and uses fancy graphics where doing so is reasonable and useful. Example:

The bar is configured much like XMonad. It uses ~/.config/taffybar/taffybar.hs as its configuration file. This file is just a Haskell program that invokes the real main function with a configuration object. The configuration file basically just specifies which widgets to use, though any arbitrary Haskell code can be executed before the bar is created.

There are some generic pre-defined widgets available:

  • Graph (modeled after the graph widget in Awesome)
  • Vertical bar (also similar to a widget in Awesome)
  • Periodically-updating labels, graphs, and vertical bars

There are also several more specialized widgets:

  • Battery widget
  • Textual clock
  • Freedesktop.org notifications (via dbus)
  • MPRIS1 and MPRIS2 widgets
  • Weather widget
  • XMonad log widget (listens on dbus instead of stdin)
  • System tray


An incomplete list of things that would be cool to have:

  • xrandr widget (for dealing changing clone/extend mode and orientation)
  • Better behavior when adding/removing monitors (never tried it)
  • Make MPRIS more configurable



  • Fix a longstanding bug in loading .rc files (Peder Stray)
  • Add support for scrolling in the workspace switcher (Saksham Sharma)
  • Improve default formatting of empty workspaces in the pager (Saksham Sharma)
  • Relax gtk version bounds


  • GHC 7.10 compat


  • Fix compilation with gtk 0.13.1


  • Try again to fix the network dependency


  • Expand the version range for time
  • Depend on network-uri instead of network


  • Make the clock react to time zone changes



  • Resize the bar when the screen configuration changes (Robert Helgesson)
  • Support bypassing dyre by exposing taffybarMain (Christian Hoener zu Siederdissen)
  • Textual CPU and memory monitors (Zakhar Voit)
  • A new window switcher menu in the pager (José Alfredo Romero L)
  • Dynamic workspace support in the workspace switcher (Nick Hu)
  • More configurable network monitor (Arseniy Seroka)
  • New widget: text-based command runner (Arseniy Seroka)
  • The Graph widget supports lines graphs (via graphDataStyles) (Joachim Breitner)
  • Compile with gtk2hs 0.13

Bug Fixes

  • Reduce wakeups by tweaking the default GHC RTS options (Joachim Breitner)
  • UTF8 fixes (Nathan Maxson)
  • Various fixes to EWMH support (José Alfredo Romero L)


The XMonadLog module is deprecated. This module let taffybar display XMonad desktop information through a dbus connection. The EWMH desktop support by José Alfredo Romero L is better in every way, so that (through TaffyPager) is the recommended replacement. Upgrading should be straightforward.


  • A new pager (System.Taffybar.TaffyPager) from José A. Romero L. This pager is a drop-in replacement for the dbus-based XMonadLog widget. It communicates via X atoms and EWMH like a real pager. It even supports changing workspaces by clicking on them. I recommend this over the old widget.
  • Added an MPRIS2 widget (contributed by Igor Babuschkin)
  • Ported to use the newer merged dbus library instead of dbus-client/dbus-core (contributed by CJ van den Berg)
  • Finally have the calendar widget pop up over the date/time widget (contributed by José A. Romero)
  • GHC 7.6 compatibility
  • Vertical bars can now have dynamic background colors (suggested by Elliot Wolk)
  • Bug fixes


  • More robust strut handling for multiple monitors of different sizes (contributed by Morgan Gibson)
  • New widgets from José A. Romero (network monitor, fs monitor, another CPU monitor)
  • Allow the bar widget to grow vertically (also contributed by José A. Romero)


  • Add some more flexible formatting options for the XMonadLog widget (contributed by cnervi).
  • Make the PollingLabel more robust with an exception handler for IOExceptions
  • Added more documentation for a few widgets


  • Depend on gtk 0.12.1+ to be able to build under ghc 7.2
  • Fix the background colors in the calendar so that it follows the GTK theme instead of the bar-specific color settings
  • Fix the display of non-ASCII window titles in the XMonad log applet (assuming you use the dbusLog function)
  • Add a horrible hack to force the bar to not resize to be larger than the screen due to notifications or long window titles


  • Readable widget for freedesktop notifications
  • Fixed a few potential deadlocks on startup
  • Use the GTK+ rc-file styling system for colors instead of hard coding them
comments powered byDisqus