herbe

[fork] notifications
Log | Files | Refs | README | LICENSE

commit 6abd6e39859360f4bc40db80b3bf28a6551b3c79
parent 466651958de2a6e60325eea8d12d109328e07a88
Author: Samuel Dudik <samuel.dudik@gmail.com>
Date:   Tue, 18 Aug 2020 18:46:36 +0200

Merge branch 'master' of https://github.com/dudik/herbe into master

Diffstat:
MREADME.md | 64+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 63 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md @@ -5,10 +5,72 @@ ## Usage ```shell -herbe "herbe notifications" " " "Daemon-less notifications without D-Bus. Minimal and lightweight." +$ herbe "herbe notifications" " " "Daemon-less notifications without D-Bus. Minimal and lightweight." ``` will display the notification shown above +* [Dismiss a notification](#dismiss-a-notification) +* [Actions](#actions) +* [Newlines](#newlines) +* [Multiple notifications](#multiple-notifications) +* [Notifications don't show up](#notifications-dont-show-up) + +### 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: +```shell +$ 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: +```shell +$ herbe "Notification body" ; [ $? -eq 3 ] && echo "This is an action" +``` +Where everything after `&&` is the action and will get executed after the notification gets accepted. + +### Newlines +Every command line argument gets printed on a separate line by default e.g.: +```shell +$ herbe "First line" "Second line" "Third line" ... +``` +You can also use `\n` e.g. in `bash`: +```shell +$ herbe $'First line\nSecond line\nThird line' +``` +But by default `herbe` prints `\n` literally: +```shell +$ herbe "First line\nStill the first line" +``` +Output of other programs will get printed correctly, just make sure to escape it (so you don't end up with every word on a separate line): +```shell +$ herbe "$(ps axch -o cmd:15,%cpu --sort=-%cpu | head)" +``` + +### 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. + +### 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: +```shell +$ pkill -SIGKILL herbe +``` +Then just call `herbe` without any arguments: +```shell +$ herbe +``` +Notifications should now show up as expected. + +Don't ever send any signals to `herbe` except these: +```shell +# 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`. + ## Installation ### Dependencies * X11 (Xlib)