taffybar-7.2.5: README.md
# Taffybar
[](https://github.com/taffybar/taffybar/actions/workflows/nix.yml) [](https://hackage.haskell.org/package/taffybar) [](https://github.com/taffybar/taffybar/releases/latest) [](http://stackage.org/lts/package/taffybar) [](http://stackage.org/nightly/package/taffybar) [](https://matrix.to/#/#taffybar:matrix.org) [](https://gitter.im/taffybar/Lobby) [](https://github.com/taffybar/taffybar/blob/master/LICENSE)
## Summary
Taffybar is a desktop information bar, intended primarily for use with
[XMonad][], though it can also function alongside other EWMH compliant window
managers. It is similar in spirit to [xmobar][], but it differs in that it gives
up some simplicity for a reasonable helping of [GTK 3][] eye candy.
Taffybar also supports running under Wayland via `gtk-layer-shell`. Wayland
support is currently compositor-specific for some widgets, with Hyprland
workspaces, windows, and layout widgets available. Many widgets still rely on
X11/EWMH, so check the widget docs and examples (including
`example/taffybar-wayland.hs`) for what works on your setup.
## Package Release Status
The unreleased commit badges are path-scoped to each package directory. The
root `taffybar` badge counts non-`packages/` changes.
| Package | Hackage | Unreleased commits |
| --- | --- | --- |
| `taffybar` | [](https://hackage.haskell.org/package/taffybar) | [](https://github.com/taffybar/taffybar/releases/latest) |
| `dbus-hslogger` | [](https://hackage.haskell.org/package/dbus-hslogger) | [](https://github.com/taffybar/taffybar/releases?q=dbus-hslogger) |
| `dbus-menu` | [](https://hackage.haskell.org/package/dbus-menu) | [](https://github.com/taffybar/taffybar/releases?q=dbus-menu) |
| `gi-wireplumber` | [](https://hackage.haskell.org/package/gi-wireplumber) | [](https://github.com/taffybar/taffybar/releases?q=gi-wireplumber) |
| `gtk-scaling-image` | [](https://hackage.haskell.org/package/gtk-scaling-image) | [](https://github.com/taffybar/taffybar/releases?q=gtk-scaling-image) |
| `gtk-sni-tray` | [](https://hackage.haskell.org/package/gtk-sni-tray) | [](https://github.com/taffybar/taffybar/releases?q=gtk-sni-tray) |
| `gtk-strut` | [](https://hackage.haskell.org/package/gtk-strut) | [](https://github.com/taffybar/taffybar/releases?q=gtk-strut) |
| `status-notifier-item` | [](https://hackage.haskell.org/package/status-notifier-item) | [](https://github.com/taffybar/taffybar/releases?q=status-notifier-item) |
| `xdg-desktop-entry` | [](https://hackage.haskell.org/package/xdg-desktop-entry) | [](https://github.com/taffybar/taffybar/releases?q=xdg-desktop-entry) |
[](https://github.com/taffybar/taffybar/blob/master/doc/screenshot.png)
[GTK 3]: https://www.gtk.org/
[XMonad]: https://xmonad.org/
[dwm]: https://dwm.suckless.org/
[xmobar]: https://codeberg.org/xmobar/xmobar
[gi-gtk]: https://hackage.haskell.org/package/gi-gtk
[Haskell]: https://www.haskell.org/
[GHC]: https://www.haskell.org/ghc/
## Taffybar is a library
As with window managers like [XMonad][] and [dwm][], Taffybar is most appropriately
described as a library that allows you to build an executable that is customized
to your tastes. Like [xmobar][] and [XMonad][], Taffybar is configured in [Haskell][].
Taffybar has a reasonably useful default configuration built in.
To use a different configuration, however, you must install a Haskell compiler
([GHC][]) that can compile your [`taffybar.hs`](https://github.com/taffybar/taffybar/blob/master/example/taffybar.hs) source file.
You then select from [the list of available widgets][widgets] for
functionality to add to your Taffybar. If the widget you need doesn't
exist, then create your own with GTK.
[widgets]: http://hackage.haskell.org/package/taffybar/docs/System-Taffybar-Widget.html
## Documentation
* [**Installation**][install]
Taffybar can be installed from Linux distribution packages,
or compiled from source.
* [**Configuration** (and compilation)][config]
Taffybar can recompile itself from `taffybar.hs`, similar to how
[XMonad][] recompiles itself from `xmonad.hs`.
There are a number of ways to compile your configuration.
* [**Customization**][custom]
Taffybar has a library of functions and widgets for collecting and
displaying information.
Many aspects of the bar's appearance can be changed using CSS.
* [**Running**][run]
Taffybar is one component of a desktop environment. To work
correctly, it requires other desktop components and system services.
* [**FAQ**][faq]
Assorted information.
* [**Contributing**][contrib]
[](https://github.com/taffybar/taffybar/labels/help%20wanted)
[](https://github.com/taffybar/taffybar/labels/easy)
Taffybar desperately needs contributors.
There is plenty to do; enquire within.
[install]: https://github.com/taffybar/taffybar/blob/master/doc/install.md
[config]: https://github.com/taffybar/taffybar/blob/master/doc/config.md
[custom]: https://github.com/taffybar/taffybar/blob/master/doc/custom.md
[run]: https://github.com/taffybar/taffybar/blob/master/doc/run.md
[faq]: https://github.com/taffybar/taffybar/blob/master/doc/faq.md
[contrib]: https://github.com/taffybar/taffybar/blob/master/doc/contrib.md