From d12e48578d240bc12ab6c5632a33a011d28bfded Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Dud=C3=ADk?= <24730635+dudik@users.noreply.github.com> Date: Sat, 15 Aug 2020 21:02:56 +0200 Subject: [PATCH 1/3] Update README.md --- README.md | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8524a01..e1c4cc9 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,48 @@ ## 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 +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 "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: +```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`. + +### 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) From 2e781f19cd7f7ec90fc26485ea771f892ff8eaa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Dud=C3=ADk?= <24730635+dudik@users.noreply.github.com> Date: Sun, 16 Aug 2020 13:46:57 +0200 Subject: [PATCH 2/3] Update README.md --- README.md | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e1c4cc9..67b89a2 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ $ herbe "herbe notifications" " " "Daemon-less notifications without D-Bus. Mini ``` 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 @@ -23,6 +29,27 @@ $ 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. +### 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 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 @@ -44,9 +71,6 @@ $ 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) From eb1b49f2f8eb22fdc22f38df78116b2e0c04724c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Dud=C3=ADk?= <24730635+dudik@users.noreply.github.com> Date: Sun, 16 Aug 2020 14:08:18 +0200 Subject: [PATCH 3/3] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 67b89a2..5e4ee47 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ $ pkill -SIGUSR1 herbe 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 "Notificatio body" ; [ $? -eq 3 ] && echo "This is an action" +$ 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. @@ -42,7 +42,7 @@ 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 to escape it (so you don't end up with every word on a separate 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)" ```