Как отправлять уведомления на рабочий стол с помощью notify-send
Каждая среда рабочего стола в Linux имеет свою собственную систему уведомлений, которая реализует спецификации уведомлений Freedesktop. Некоторые из них, например GNOME или KDE, используют собственные встроенные системы уведомлений, которые невозможно заменить; другие, такие как Xfce или Mate, используют более модульные компоненты (демон уведомлений Xfce и демон уведомлений Mate соответственно). Также существуют системы уведомлений, независимые от рабочего стола (например, Данст): большую часть времени они используются при минимальных настройках (например, при использовании простого оконного менеджера вместо полноценной среды рабочего стола).
В этом уроке мы узнаем, как отправлять уведомления на рабочий стол из командной строки с помощью утилиты notify-send.
В этом уроке вы узнаете:
Как установить notify-send в некоторых наиболее используемых дистрибутивах Linux
Как использовать утилиту notify-send для отправки уведомлений на рабочий стол
-
Как указать срочность и срок действия уведомления
Как использовать собственный значок уведомления
Монтаж
Утилита notify-send доступна во всех основных дистрибутивах Linux как часть библиотеки libnotify. В большинстве случаев он устанавливается по умолчанию, однако, если по той или иной причине это не так, вот как его установить явно. В Fedora и других дистрибутивах семейства Red Hat мы можем установить библиотеку, выполнив следующую команду:
$ sudo dnf install libnotify
В Debian и Ubuntu утилиты, связанные с библиотекой libnotify, распространяются в специальном пакете, отдельном от самой библиотеки. Пакет называется libnotify-bin
и его можно установить, запустив:
$ sudo apt install libnotify-bin
В Archlinux пакет, который нам нужно установить, называется просто libnotify
. Он содержится в репозитории «Extra», и мы можем установить его с помощью менеджера пакетов pacman
:
$ sudo pacman -Sy libnotify
Давайте посмотрим, как мы можем использовать notify-send для отправки уведомлений на рабочий стол.
Как использовать уведомление-отправку
Утилита notify-send принимает только один обязательный аргумент — сводку уведомления. В следующем примере мы вызываем утилиту следующим простым способом:
$ notify-send "this is the summary"
Вот результат команды, вызванной в контексте среды рабочего стола GNOME:
Если мы хотим включить в уведомление дополнительную информацию, мы можем включить тело в качестве второго аргумента, принимаемого утилитой; оно отображается после сводки. Вот пример уведомления, которое включает в себя тело и вывод, который оно производит:
$ notify-send "this is the summary" "this is the body of the notification"
Внутри тела уведомления можно использовать ограниченный набор HTML-тегов:
<b></b>
<i></i>
<u></u>
<a></a>
<img></img>
Следовательно, мы можем сделать так, чтобы текст отображался жирным или курсивом, использовать гиперссылки и изображения.
Указание срочности уведомления
Существует три уровня срочности, которые могут быть связаны с уведомлением. Они по порядку:
критический
нормальный
низкий
Чтобы указать срочность уведомления при использовании утилиты notify-send, все, что нам нужно сделать, это использовать опцию -u
(сокращение от --urgency
) и передать уровень срочности в качестве аргумента. Например, чтобы отправить критическое уведомление, мы должны выполнить следующую команду:
$ notify-send -u critical "Critical notification!" "this is the body of the notification"
Как видно на скриншоте ниже, значок, связанный с критическим уведомлением, отличается от стандартного. Критические уведомления необходимо отклонять вручную:
Говоря о сроке действия уведомления, его можно легко указать с помощью опции -t
(--expire-time
) , которая принимает время продолжительности в миллисекунды в качестве аргумента. В качестве примера, чтобы отправить уведомление, срок действия которого истекает через 3 секунды, мы должны запустить:
$ notify-send -t 3000 "this is the summary" "this is the body of the notification"
Однако, как указано в руководстве по отправке уведомлений, не все реализации системы уведомлений учитывают этот параметр: GNOME всегда игнорирует его, а KDE Plasma игнорирует его для уведомлений с «критическим» уровнем срочности.
Использование пользовательского значка уведомления
Утилита notify-send предоставляет возможность указать значок уведомления. Вариант: -i
или --icon
; он принимает путь к значку, который мы хотим использовать в качестве аргумента. Представьте, что мы хотим отправить критическое уведомление об уровне заряда батареи машины и используем значок Adwaita «критический заряд батареи», который обычно можно найти как /usr/share/icons/Adwaita/scalable/status/battery-level- 0-symbolic.svg
. Вот команда, которую мы будем запускать:
$ notify-send -u critical -i /usr/share/icons/Adwaita/scalable/status/battery-level-0-symbolic.svg "Connect charger!" "critical battery level, please connect charger"
Вот уведомление, созданное приведенной выше командой:
Выводы
В этой статье мы узнали, как использовать утилиту notify-send для отправки уведомлений на рабочий стол из командной строки; возможность, которая может быть особенно полезна в сценариях оболочки. Мы узнали, как установить утилиту в некоторые наиболее часто используемые дистрибутивы Linux, как указать текст и сводку уведомления, как указать срочность уведомления и срок его действия, а также как использовать собственный значок для уведомления. Чтобы узнать больше о спецификациях уведомлений Freedesktop, вы можете обратиться к онлайн-документации.