Уведомления без демонов без D-Bus. Минималистичный и легкий.
Менее 200 строк кода
Не работает в фоновом режиме, просто отображает уведомление и завершает работу.
Никаких внешних зависимостей, кроме Xlib и Xft.
Настраивается через config.h
или Xresources (с помощью этого патча)
Поддержка действий
Расширяемо через патчи
Использование
Патчи
Закрыть уведомление
Действия
Новые строки
Несколько уведомлений
Уведомления не появляются
Установка
Пакеты
Зависимости
Строить
Конфигурация
Способствовать
Список доступных патчей
Чтобы создать новый патч, вам придется открыть запрос на внесение изменений. Добавьте .diff
к URL-адресу запроса на включение, чтобы получить загружаемый файл различий. Не забудьте добавить к заголовку префикс patch:
и применить к нему метку patch
. Для вдохновения посмотрите мой патч Xresources. Спасибо.
Примечание. Этот метод исправления во многом был вдохновлен совмом Дилана.
Уведомление можно отклонить, щелкнув по нему с помощью DISMISS_BUTTON
(установлено в config.h, по умолчанию — левая кнопка мыши) или отправив ему сигнал SIGUSR1
:
$ pkill -SIGUSR1 трава
Отклоненные уведомления возвращают код выхода 2.
Действие — это фрагмент шелл-кода, который запускается при принятии уведомления. Принятие уведомления — это то же самое, что его отклонение, но вы должны использовать либо ACTION_BUTTON
(по умолчанию правая кнопка мыши), либо сигнал SIGUSR2
. Принятое уведомление всегда возвращает код выхода 0. Чтобы указать действие:
$ herbe "Тело уведомления" && echo "Это действие"
Где все после &&
является действием и будет выполнено после принятия уведомления.
Каждый аргумент командной строки по умолчанию печатается в отдельной строке, например:
$herbe "Первая линия" "Вторая линия" "Третья линия" ...
Вы также можете использовать n
например, в bash
:
$herbe $'Первое бельеВторое бельеТретья линия'
Но по умолчанию herbe
печатает n
:
$herbe "Первое бельеВсе еще первая линия"
Вывод других программ будет напечатан правильно, просто не забудьте экранировать его (чтобы каждое слово не было в отдельной строке):
$ herbe "$(ps axch -o cmd:15,%cpu --sort=-%cpu | head)"
Уведомления помещаются в очередь и отображаются одно за другим в порядке создания (первым поступило, первым отправлено). Они не перекрываются, и каждый из них отображается на протяжении всей своей продолжительности.
Скорее всего, работающее уведомление было принудительно прекращено (SIGKILL или любой неперехваченный сигнал), из-за чего семафор не разблокировался. Сначала убейте любой застрявший экземпляр herbe
:
$ pkill -SIGKILL трава
Затем просто вызовите herbe
без каких-либо аргументов:
$ трава
Уведомления теперь должны отображаться так, как ожидалось.
Никогда не отправляйте herbe
никаких сигналов, кроме следующих:
# то же, что и pkill -SIGTERM herbe, завершает каждый запущенный процесс $ pkill herbe $ pkill -SIGUSR1 трава $ pkill -SIGUSR2 трава
И с тобой все должно быть в порядке. Это все, что вам действительно нужно для взаимодействия с herbe
.
Патч для OpenBSD
Патч для FreeBSD
Порт Wayland от muevoid
Я поддерживаю только пакет AUR herbe-git.
X11 (Xlib)
Xft
Имена пакетов различаются в зависимости от того, какой дистрибутив вы используете. Например, если вы используете Void Linux, вам придется установить следующие зависимости:
sudo xbps-install base-devel libX11-devel libXft-devel
git клон https://github.com/dudik/herbecd Herbe sudo сделать установку
make install
требует привилегий root, поскольку он копирует полученный двоичный файл в /usr/local/bin
. Это делает herbe
доступным во всем мире.
Вы также можете использовать make clean
для удаления двоичного файла из папки сборки, sudo make uninstall
для удаления двоичного файла из /usr/local/bin
или просто make
для локальной сборки двоичного файла.
Herbe настраивается во время компиляции путем редактирования config.h
. Каждый вариант должен быть понятен. Опция height
отсутствует, поскольку высота определяется размером шрифта и заполнением текста.
Патч Xresources
Если вы хотите сообщить об ошибке или у вас есть запрос на добавление функции, смело открывайте проблему.
qutebrowser поддерживает показ веб-уведомлений через Herbe с помощью настройки content.notifications.presenter
.