Modular status panel for X11 and Wayland, inspired by
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Daniel Eklöf 66ec7a85a1
example: conf: foreign-toplevel: merge ‘: ’ and ‘{title}’
3 days ago
.builds ci: build on alpine/latest, not edge 7 months ago
bar bar/wayland: coalesce “refresh” commands 5 days ago
completions main: add -d,--log-level=info|warning|error|none 2 months ago
decorations deco: new decoration, ‘border’ 3 days ago
doc doc: decorations: document the new ‘border’ decoration 3 days ago
examples example: conf: foreign-toplevel: merge ‘: ’ and ‘{title}’ 3 days ago
external module/foreign-toplevel: initial support 2 months ago
modules network: must re-send station request when we receive family ID 3 days ago
particles allow ramp particles to overwrite min and max 1 month ago
subprojects subprojects: use meson wrap files for tllist+fcft 10 months ago
test Rename project: f00bar -> yambar 2 years ago
.gitignore subprojects: use meson wrap files for tllist+fcft 10 months ago
.gitlab-ci.yml ci: build on alpine/latest, not edge 7 months ago
.gitmodules fcft/tllist: remove git submodules 2 years ago
.woodpecker.yml ci: also build release branches 4 days ago deco: new decoration, ‘border’ 3 days ago
LICENSE license: MIT 3 years ago
PKGBUILD meson/pkgbuild: bump version to 1.7.0 2 months ago
PKGBUILD.wayland-only meson/pkgbuild: bump version to 1.7.0 2 months ago ci: codeberg CI 2 weeks ago
color.h initial commit: wip 3 years ago
config-verify.c config: fix incorrect attribute name in validation 2 months ago
config-verify.h config-verify: add conf_verify_bool() 3 months ago
config.c Add layer option 2 months ago
config.h fcft: adjust to fcft-2.0 API changes 2 years ago
decoration.h cairo: replace cairo with pixman in decos, particles and modules 2 years ago generate-version: handle git repo not having any tags 2 weeks ago
log.c log: LOG_ERRNO: include numeric value of errno 2 months ago
log.h log: pull in log.{c,h} from foot 2 months ago
main.c main: cast sig_atomic_t to long, to fix the printf portability 4 weeks ago wayland: unbreak build without memfd_create 3 weeks ago
meson_options.txt Make libmpdclient an optional dependency 1 month ago
module.c particle: remove cairo context from begin_expose() 2 years ago
module.h module: add ‘description()’ to the module interface 4 months ago
particle.c signal: add the signal header needed for the signal functions 4 weeks ago
particle.h config+particle: add support for mouse wheel up/down 4 months ago
plugin.c deco: new decoration, ‘border’ 3 days ago
plugin.h plugins: export a const function pointer interface struct 3 years ago
screenshot.png screenshot: update 2 years ago
stride.h font: initial port from cairo scaled fonts to raw freetype + pixman 2 years ago
tag.c tag: add kib/mib/gib formatters 2 months ago
tag.h Add support binding on-click handlers to other buttons than LEFT 4 months ago
xcb.c misc: xcb_connect() always returns a non-NULL pointer 3 years ago
xcb.h xcb: extern declare cached XCB atoms in header file 1 year ago
yambar.desktop desktop: add Desktop Entry file 2 years ago
yml.c yml: silence unused variable warning with Clang 13 3 weeks ago
yml.h yml: add line/column info to every node 3 years ago

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 5 Free:style=solid:size=12"}
          - string: {text: "{date}", right-margin: 5}
          - string: {text: , font: "Font Awesome 5 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
  • i3 (and Sway)
  • label
  • mpd
  • network
  • 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

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