Go to file
Mattéo Delabre d8706af2ea
Terminate custom module scripts on exit
(Fixes #358.)

Subprocesses created for custom module scripts were previously left
running when the parent Waybar process exited. This patch sets the
parent-death signal of child processes (PR_SET_PDEATHSIG on Linux,
PROC_PDEATHSIG_CTL on FreeBSD) to SIGTERM.

Caveats:

* This uses Linux-specific or FreeBSD-specific calls. I don’t know if
  this project targets other systems?
* There is a possibility that Waybar exits after calling `fork()`, but
  before calling `prctl` to set the parent-death signal. In this case,
  the child will not receive the SIGTERM signal and will continue to
  run. I did not handle this case as I consider it quite unlikely, since
  module scripts are usually launched only when Waybar starts. Please
  let me know if you think it needs to be handled.

Testing:

* With `htop` open, run Waybar v0.9.5 with a custom module that has an
  `exec` script. Terminate the Waybar process and notice that the
  script’s subprocess stays alive and is now a child of the init
  process.
* Run Waybar with this patch and follow the same steps as above. Notice
  that this time the script’s subprocess terminates when the parent
  exits.
2021-02-12 21:14:46 +01:00
.github CI: add FreeBSD to Actions 2020-12-23 20:40:44 +00:00
Dockerfiles Dockerfiles/alpine: add sndio-dev. 2020-10-04 02:54:57 -03:00
include Terminate custom module scripts on exit 2021-02-12 21:14:46 +01:00
man refactor(bluetooth): remove `interval` and timer thread 2021-02-09 21:27:21 -08:00
package Add archlinux PKGBUILD 2018-08-09 20:50:11 +02:00
protocol Update to the latest version of the foreign toplevel manager protocol 2020-12-04 08:03:43 +01:00
resources style: add 4px margins to window and workspaces modules 2020-12-02 05:12:48 -08:00
src Merge pull request #1015 from alebastr/rfkill-events 2021-02-11 10:20:13 +01:00
subprojects Update fmt subproject to 7.1.3 2020-11-30 17:35:02 -08:00
.clang-format chore: Add clang-format configuration and format MPD module 2019-04-18 15:57:57 +02:00
.editorconfig chore: Add EditorConfig file 2019-04-18 15:55:45 +02:00
.gitignore Ignore all potential build directories 2019-02-28 19:57:49 -07:00
.gitmodules Add archlinux PKGBUILD 2018-08-09 20:50:11 +02:00
.travis.yml .travis.yml: add sndio to FreeBSD run. 2020-10-04 02:54:57 -03:00
LICENSE Initial commit 2018-08-08 23:53:37 +02:00
Makefile Switch default Makefile rule from run to build 2020-03-14 16:25:33 -04:00
README.md sndio: Add module. 2020-10-04 02:54:57 -03:00
meson.build Use g_unichar_iswide to properly align calendar on CJK locales 2021-01-31 11:53:53 -08:00
meson_options.txt sndio: Add module. 2020-10-04 02:54:57 -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 Travis Licence Paypal Donate
Waybar

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

Current features

  • Sway (Workspaces, Binding mode, Focused window name)
  • Tray #21
  • Local time
  • Battery
  • Network
  • Bluetooth
  • Pulseaudio
  • Disk
  • Memory
  • Cpu load average
  • Temperature
  • MPD
  • Custom scripts
  • Multiple output configuration
  • And much 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]

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 \
  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

Contributions welcome! - have fun :)
The style guidelines is Google's

License

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