2.9 KiB
🌱 herbe
Daemon-less notifications without D-Bus. Minimal and lightweight.
Usage
$ herbe "herbe notifications" " " "Daemon-less notifications without D-Bus. Minimal and lightweight."
will display the notification shown above
Dismiss a notification
A notification can be dismissed either by clicking on it with DISMISS_BUTTON
(set in config.h, defaults to left mouse button) or sending a SIGUSR1
signal to it:
$ pkill -SIGUSR1 herbe
Actions
Action is a piece of shell code that runs when a notification gets accepted. Accepting a notification is the same as dismissing it, but you have to use either ACTION_BUTTON
(defaults to right mouse button) or the SIGUSR2
signal.
An accepted notification always returns exit code 3. To specify an action:
$ herbe "Notificatio body" ; [ $? -eq 3 ] && echo "This is an action"
Where everything after &&
is the action and will get executed after the notification gets accepted.
Notifications don't show up
Most likely a running notification got terminated forcefully (SIGKILL or any uncaught signal) which caused the semaphore not getting unlocked. First, kill any herbe
instance that is stuck:
$ pkill -SIGKILL herbe
Then just call herbe
without any arguments:
$ herbe
Notifications should now show up as expected.
Don't ever send any signals to herbe
except these:
# same as pkill -SIGTERM herbe, terminates every running herbe process
$ pkill herbe
$ pkill -SIGUSR1 herbe
$ pkill -SIGUSR2 herbe
And you should be fine. That's all you really need to interact with herbe
.
Multiple notifications
Notifications are put in a queue and shown one after another in order of creation (first in, first out). They don't overlap and each one is shown for its entire duration.
Installation
Dependencies
- X11 (Xlib)
- Xft
- freetype2
The names of packages are different depending on which distribution you use. For example, if you use Void Linux you will have to install these dependencies:
sudo xbps-install base-devel libX11-devel libXft-devel
Build
git clone https://github.com/dudik/herbe
cd herbe
sudo make install
make install
requires root privileges because it copies the resulting binary to /usr/local/bin
. This makes herbe
accessible globally.
You can also use make clean
to remove the binary from the build folder, sudo make uninstall
to remove the binary from /usr/local/bin
or just make
to build the binary locally.
Configuration
herbe is configured at compile-time by editing config.h
. Every option should be self-explanatory. There is no height
option because height is determined by font size and text padding.
Contribute
If you want to report a bug or you have a feature request, feel free to open an issue.