Go to file
André Aparício a1cd0acac5 Fix random segfault on GTK icon functions
The segfaults were happening on GTK icon theme functions, which are
called via the C++ interface functions such as Gtk::IconTheme::has_icon.

There are multiple modules and threads using this functions on the default
icon theme by calling Gtk::IconTheme::get_default(), which returns the same
object for all callers, and was causing concurrent access to the same internal
data structures on the GTK lib. Even a seemingly read-only function such as
has_icon can cause writes due to the internal icon cache being updated.

To avoid this issues, a program wide global mutex must be used to ensure
a single thread is accessing the default icon theme instance.

This commit implements wrappers for the existing IconTheme function calls,
ensuring the global lock is held while calling the underling GTK functions.
2023-07-03 22:32:24 +01:00
.github make:Add phony 'test' rule 2023-03-13 00:50:19 +00:00
Dockerfiles Refresh Gentoo docker 2023-06-15 13:58:33 +03:00
include Fix random segfault on GTK icon functions 2023-07-03 22:32:24 +01:00
man Merge pull request #2212 from evyatark2/wpscroll 2023-07-02 11:46:56 +02:00
nix dev: Added Nix Flake support 2022-12-06 18:44:26 +01:00
package Add archlinux PKGBUILD 2018-08-09 20:50:11 +02:00
protocol Update to new ipc version 2023-05-25 00:27:50 +03:00
resources feat: wireplumber support 2022-11-16 23:23:07 -08:00
src Fix random segfault on GTK icon functions 2023-07-03 22:32:24 +01:00
subprojects cava bump 2023-04-28 13:38:35 +03:00
test test:Add test for output config with multiple exclusion/wildcard 2023-03-13 00:49:18 +00:00
.clang-format refactor: lint 2022-04-06 08:37:19 +02:00
.editorconfig chore: Add EditorConfig file 2019-04-18 15:55:45 +02:00
.envrc.sample Rename .envrc to .envrc.sample 2023-01-24 09:33:38 +01:00
.gitignore Merge pull request #1871 from Narice/feat/nix-flake-support 2023-01-24 09:34:03 +01:00
.gitmodules Add archlinux PKGBUILD 2018-08-09 20:50:11 +02:00
LICENSE Initial commit 2018-08-08 23:53:37 +02:00
Makefile make:Add phony 'test' rule 2023-03-13 00:50:19 +00:00
README.md Fix broken link 2023-06-01 22:08:54 +02:00
flake.lock dev: Added Nix Flake support 2022-12-06 18:44:26 +01:00
flake.nix dev: Added Nix Flake support 2022-12-06 18:44:26 +01:00
meson.build Fix random segfault on GTK icon functions 2023-07-03 22:32:24 +01:00
meson_options.txt Cava module 2023-04-15 02:36:15 +03:00
preview-2.png chore: optimize preview 2018-10-01 18:56:58 +02:00
preview.png chore: optimize preview 2018-10-01 18:56:58 +02:00

README.md

Waybar Licence Paypal Donate
Waybar

Highly customizable Wayland bar for Sway and Wlroots based compositors.
Available in Arch community or AUR, Gentoo, openSUSE, and Alpine Linux.
Waybar examples

Current features

  • Sway (Workspaces, Binding mode, Focused window name)
  • River (Mapping mode, Tags, Focused window name)
  • Hyprland (Focused window name)
  • DWL (Tags) requires dwl ipc patch
  • Tray #21
  • Local time
  • Battery
  • UPower
  • Network
  • Bluetooth
  • Pulseaudio
  • Wireplumber
  • Disk
  • Memory
  • Cpu load average
  • Temperature
  • MPD
  • Custom scripts
  • Custom image
  • Multiple output configuration
  • And many more customizations

Configuration and Styling

See the wiki for more details.

Installation

Waybar is available from a number of Linux 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 build
$ ninja -C build
$ ./build/waybar
# If you want to install it
$ ninja -C build install
$ waybar

Dependencies

gtkmm3
jsoncpp
libsigc++
fmt
wayland
chrono-date
spdlog
libgtk-3-dev [gtk-layer-shell]
gobject-introspection [gtk-layer-shell]
libgirepository1.0-dev [gtk-layer-shell]
libpulse [Pulseaudio module]
libnl [Network module]
libappindicator-gtk3 [Tray module]
libdbusmenu-gtk3 [Tray module]
libmpdclient [MPD module]
libsndio [sndio module]
libevdev [KeyboardState module]
xkbregistry
upower [UPower battery module]

Build dependencies

cmake
meson
scdoc
wayland-protocols

On Ubuntu, you can install all the relevant dependencies using this command (tested with 19.10 and 20.04):

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

Contributions welcome!
Have fun :)
The style guidelines are Google's

License

Waybar is licensed under the MIT license. See LICENSE for more information.