Modular status panel for X11 and Wayland, inspired by https://github.com/jaagr/polybar
ci: drop gitlab CI
tag: handle width formatter on ints when no other formatting options are used
doc: tags: add a couple of formatting examples



You can also use your local clone with git send-email.

CI status


Packaging status


  1. Introduction
  2. Configuration
  3. Modules
  4. Installation
  5. Bugs



yambar is a lightweight and configurable status panel (bar, for short) for X11 and Wayland, that goes to great lengths to be both CPU and battery efficient - polling is only done when absolutely necessary.

It has a number of modules that provide information in the form of tags. For example, the clock module has a date tag that contains the current date.

The modules do not know how to present the information though. This is instead done by particles. And the user, you, decides which particles (and thus how to present the data) to use.

Furthermore, each particle can have a decoration - a background color or a graphical underline, for example.

There is no support for images or icons. use an icon font (e.g. Font Awesome, or Material Icons) if you want a graphical representation.

There are a number of modules and particles builtin. More can be added as plugins. You can even write your own!

To summarize: a bar displays information provided by modules, using particles and decorations. How is configured by you.


Yambar is configured using YAML, in ~/.config/yambar/config.yml. It must define a top-level dictionary named bar:

  height: 26
  location: top
  background: 000000ff

    - clock:
          - string: {text: , font: "Font Awesome 6 Free:style=solid:size=12"}
          - string: {text: "{date}", right-margin: 5}
          - string: {text: , font: "Font Awesome 6 Free:style=solid:size=12"}
          - string: {text: "{time}"}

For details, see the man pages (yambar(5) is a good start).

Example configurations can be found in examples.


Available modules:

  • alsa
  • backlight
  • battery
  • clock
  • cpu
  • disk-io
  • dwl
  • foreign-toplevel
  • i3 (and Sway)
  • label
  • mem
  • mpd
  • network
  • pulse
  • removables
  • river
  • script (see script examples)
  • sway-xkb
  • xkb (XCB backend only)
  • xwindow (XCB backend only)


To build, first, create a build directory, and switch to it:

mkdir -p bld/release && cd bld/release

Second, configure the build (if you intend to install it globally, you might also want --prefix=/usr):

meson --buildtype=release ../..

Optionally, explicitly disable a backend (or enable, if you want a configuration error if not all dependencies are met) by adding either -Dbackend-x11=disabled|enabled or -Dbackend-wayland=disabled|enabled to the meson command line.

Three, build it:


Optionally, install it:

ninja install


Please report bugs to https://codeberg.org/dnkl/yambar/issues

The report should contain the following:

  • Which Wayland compositor (and version) you are running
  • Yambar version (yambar --version)
  • Log output from yambar (start yambar from a terminal)
  • If reporting a crash, please try to provide a bt full backtrace with symbols (i.e. use a debug build)
  • Steps to reproduce. The more details the better