Alex 9a10949938 ci(smoke): cover teardown, state transitions and fake hardware
The smoke test only exercised steady-state rendering and killed waybar with
SIGTERM, so whole crash classes were invisible: exit-time use-after-free
(#5182), module state transitions (#5183) and hardware-backed modules (#5179).
Add tiers that hit those paths under ASan (+ _GLIBCXX_ASSERTIONS):

- lib.sh: assert_clean_exit (SIGINT teardown -> checks segfault/abort + ASan
  report emitted during destruction), output hotplug helpers, signal/reload,
  WAYBAR_WRAP hook, opt-in leak detection.
- lifecycle.sh (gating): clean exit, runtime output hotplug (Bar/module
  destroy), toggle/reload churn, fast-interval teardown race (#5182 class).
- fuzz.sh (gating): pathological custom-backend output (empty, nonzero exit,
  invalid JSON, huge, non-UTF8, empty format).
- coverage.sh (gating): every Factory module must be classified for smoke
  coverage; a new unlisted module fails the job (#5179 slipped through).
- modules.sh: also render the whole matrix inside a group; SIGINT teardown per
  module instead of SIGTERM.
- state.sh (best-effort): real mpd driven through an empty queue (#5183) +
  stop/clear; pulseaudio + slider on a null sink.
- hardware.sh (best-effort): backlight, backlight/slider (#5179) and battery
  via umockdev.
- leakcheck.sh (report-only): clean-exit run under LSan.
2026-07-05 22:21:46 +02:00
2018-08-09 20:50:11 +02:00
2022-04-06 08:37:19 +02:00
2019-04-18 15:55:45 +02:00
2026-03-19 00:29:01 -05:00
2018-08-09 20:50:11 +02:00
2025-08-23 18:25:45 +02:00
2025-04-15 14:56:28 -05:00
2026-02-01 00:18:11 +00:00
2025-01-01 06:34:11 -05:00
2026-07-04 01:36:23 +02:00
2018-10-01 18:56:58 +02:00
2018-10-01 18:56:58 +02:00

Waybar

License Donate CI Release

Waybar

Highly customizable Wayland bar for Sway and wlroots-based compositors.
Available in all major distributions.

Installation · Wiki · Configuration · Styling · Examples · FAQ

Features

Compositor integration

Compositor Workspaces / Tags Window Layout Language Mode
Sway
River
Hyprland
Niri
Mango
DWL
Wayfire

DWL requires the dwl IPC patch.

Modules

…and more. Every module is documented on the wiki (see the Modules sidebar).

Getting started

git clone https://github.com/Alexays/Waybar
cd Waybar
meson setup build
ninja -C build
./build/waybar          # run without installing

Waybar launches with a sensible default config. To make it yours, copy the default config and stylesheet into ~/.config/waybar/ and edit them. The Configuration and Styling guides cover every option, and Examples has ready-to-use community setups.

Installation

Waybar is packaged by most distributions:

Packaging status

An Ubuntu PPA with more recent versions is available here.

Building from source

git clone https://github.com/Alexays/Waybar
cd Waybar
meson setup build
ninja -C build
ninja -C build install   # optional
Runtime dependencies
gtkmm3       jsoncpp      libsigc++    fmt          wayland
chrono-date  spdlog       xkbregistry  libgtk-3-dev upower

libpulse             [Pulseaudio module]
libnl                [Network module]
libappindicator-gtk3 [Tray module]
libdbusmenu-gtk3     [Tray module]
libmpdclient         [MPD module]
libsndio             [sndio module]
libevdev             [KeyboardState module]
Build dependencies
cmake   meson   scdoc   wayland-protocols
Install dependencies — Ubuntu
sudo apt install \
  clang-tidy gobject-introspection libdbusmenu-gtk3-dev libevdev-dev \
  libfmt-dev libgirepository1.0-dev libgtk-3-dev libgtkmm-3.0-dev \
  libinput-dev libjsoncpp-dev libmpdclient-dev libnl-3-dev libnl-genl-3-dev \
  libpulse-dev libsigc++-2.0-dev libspdlog-dev libwayland-dev scdoc upower \
  libxkbregistry-dev
Install dependencies — Arch
pacman -S --asdeps \
  gtkmm3 jsoncpp libsigc++ fmt wayland chrono-date spdlog gtk3 \
  gobject-introspection libgirepository libpulse libnl libappindicator-gtk3 \
  libdbusmenu-gtk3 libmpdclient sndio libevdev libxkbcommon upower meson \
  cmake scdoc wayland-protocols glib2-devel

Contributing

Contributions are welcome — see CONTRIBUTING.md. The style guidelines are Google's C++ style.

Docs live in the man pages. Module documentation is written in man/ (scdoc) and auto-synced to the wiki. Edit the man page, not the wiki — see .github/wiki.

Caution

Distributions of Waybar are only released on the official GitHub page.
Waybar does not have an official website. Do not trust any site claiming to be official.

License

Waybar is licensed under the MIT license. See LICENSE for details.

S
Description
Fork of https://github.com/Alexays/Waybar to work with my fork of river
Readme MIT
9.8 MiB
Languages
C++ 93.7%
Shell 2.2%
Meson 2%
Python 0.7%
CSS 0.4%
Other 1%