Поиск по сайту:

Как отправлять уведомления на рабочий стол с помощью 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>

Следовательно, мы можем сделать так, чтобы текст отображался жирным или курсивом, использовать гиперссылки и изображения.

Указание срочности уведомления

Существует три уровня срочности, которые могут быть связаны с уведомлением. Они по порядку:

  1. критический

  2. нормальный

  3. низкий

Чтобы указать срочность уведомления при использовании утилиты 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, вы можете обратиться к онлайн-документации.

Статьи по данной тематике: