Modular status panel for X11 and Wayland, inspired by https://github.com/jaagr/polybar
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Go to file
Daniel Eklöf 78f7b60e13
ci/woodpecker/pr/woodpecker Pipeline was successful Details
ci/woodpecker/push/woodpecker Pipeline was successful Details
particle/map: non-greedy matching of quotes
Flex regexps are greedy.

This means '"foo" || "bar"' will return 'foo" || "bar', which is
obviously wrong.

Use "start conditions" to implement non-greedy matching.

Closes #302
2 weeks ago
.builds ci (sr.ht): it’s pulseaudio-dev, not libpulse-dev 8 months ago
bar bar: also log module name when logging a failed module 8 months ago
completions main: add -d,--log-level=info|warning|error|none 2 years ago
decorations overline: new decoration 2 years ago
doc module/script: path: expand ‘~’ to the user’s $HOME directory 4 weeks ago
examples module/network: poll-interval: convert value from ‘seconds’ to ‘milliseconds’ 8 months ago
external module/river: add support for ‘layout’ events 7 months ago
modules module/script: path: expand ‘~’ to the user’s $HOME directory 4 weeks ago
particles particle/map: non-greedy matching of quotes 2 weeks ago
subprojects subprojects: use meson wrap files for tllist+fcft 3 years ago
test Implement conditions on tag 1 year ago
.clang-format misc: add format files for clang-format and editorconfig 2 years ago
.editorconfig misc: add format files for clang-format and editorconfig 2 years ago
.gitignore subprojects: use meson wrap files for tllist+fcft 3 years ago
.gitmodules fcft/tllist: remove git submodules 4 years ago
.woodpecker.yml ci (woodpecker): add pipewire-dev to x86 builds 8 months ago
CHANGELOG.md particle/map: non-greedy matching of quotes 2 weeks ago
LICENSE license: MIT 5 years ago
PKGBUILD meson+pkgbuild: bump version to 1.10.0 4 weeks ago
PKGBUILD.wayland-only meson+pkgbuild: bump version to 1.10.0 4 weeks ago
README.md Update Font Awesome 5 to 6 8 months ago
char32.c char32: only include stdc-predef.h if it is available 1 year ago
char32.h fcft: adapt to API changes in fcft-3.x 2 years ago
color.h initial commit: wip 5 years ago
config-verify.c particle: on-click: tilde expansion 4 weeks ago
config-verify.h config: add inheritable option “font-shaping” 1 year ago
config.c config: don’t ignore asprintf() return value 4 weeks ago
config.h config: add inheritable option “font-shaping” 1 year ago
decoration.h cairo: replace cairo with pixman in decos, particles and modules 4 years ago
font-shaping.h config: add inheritable option “font-shaping” 1 year ago
generate-version.sh generate-version: handle git repo not having any tags 2 years ago
log.c log: fold long line 2 years ago
log.h log: pull in log.{c,h} from foot 2 years ago
main.c fcft: adapt to API changes in fcft-3.x 2 years ago
meson.build meson+pkgbuild: bump version to 1.10.0 4 weeks ago
meson_options.txt meson: make ‘foreign-toplevel’ plugin compile time optional 8 months ago
module.c particle: remove cairo context from begin_expose() 4 years ago
module.h module: const:ify ‘module’ argument to module->description() 8 months ago
particle.c particle: on-click: tilde expansion 4 weeks ago
particle.h particle: on-click: tilde expansion 4 weeks ago
plugin.c plugin: use auto-generated defines for enabled plugins 8 months ago
plugin.h plugins: export a const function pointer interface struct 5 years ago
screenshot.png screenshot: update 4 years ago
stride.h font: initial port from cairo scaled fonts to raw freetype + pixman 4 years ago
tag.c tag: explicitly initialize ‘fmt’ 4 weeks ago
tag.h Implement conditions on tag 1 year ago
xcb.c misc: xcb_connect() always returns a non-NULL pointer 5 years ago
xcb.h xcb: extern declare cached XCB atoms in header file 3 years ago
yambar.desktop desktop: add Desktop Entry file 4 years ago
yml.c yaml: keep original value when anchor and target node both defines the same key 4 months ago
yml.h modules/dwl: new module 8 months ago

README.md

CI status

Yambar

Packaging status

Index

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

Introduction

screenshot

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.

Configuration

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

bar:
  height: 26
  location: top
  background: 000000ff

  right:
    - clock:
        content:
          - 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.

Modules

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)

Installation

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:

ninja

Optionally, install it:

ninja install

Bugs

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