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:
M | README.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)