Гид по технологиям

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

• 4 min read • Linux • Обновлено 28 Nov 2025
Уведомления Linux из командной строки
Уведомления Linux из командной строки

Получение уведомлений рабочего стола из командной строки

Коротко: notify-send — это небольшая утилита, которая создает нативные уведомления в вашем окружении рабочего стола через уведомительный демон (например, libnotify). Одной строкой вы можете отправить сообщение с заголовком, текстом, уровнем важности и иконкой.

Что такое notify-send

notify-send — утилита для отправки настольных уведомлений из командной строки. Определение: простая команда для отправки уведомлений через Desktop Notifications Specification.

Важно: notify-send требует работающего демонa уведомлений в графической сессии для отображения сообщений.

Базовое уведомление

Простое уведомление рабочего стола

Откройте терминал и выполните первую команду:

notify-send 'Hello World!' 'This is a custom notification!'

Пример с другим текстом:

notify-send 'I sent a notification!' 'Yeah! Another custom notification!'

Если уведомление не появилось, проверьте, запущен ли демон уведомлений в вашей сессии (в GNOME это обычно встроено, в лёгких окружениях может потребоваться установить и запустить notify-osd или dunst).

Уровни важности

Критическое уведомление

Уведомления могут иметь три уровня важности: low, normal, critical. Окружение рабочего стола может отличать их отображение или время жизни. Задать уровень можно флагом -u:

notify-send -u critical 'SUPER IMPORTANT!' 'This is an urgent message!'

Сравнение с низким уровнем:

notify-send -u low 'Everything is alright' 'Just checking.'

Поведение зависит от реализации уведомлений в вашей системе.

Иконки

Иконки в уведомлениях

Вы можете добавить иконку через флаг -i. notify-send умеет использовать системные темы иконок: путь /usr/share/icons содержит доступные имена. Передайте имя файла без расширения или укажите путь к файлу:

notify-send -u critical -i face-worried 'I broke all the things!' 'Call the admin, NOW!'

notify-send -u normal -i '/home/user/Pictures/icons/excellent-icon.png' 'Super Awesome Custom Icon' 'It is pretty cool, right?'

Другие флаги

Полный список флагов доступен через notify-send –help. Часто полезны:

  • -t — время жизни в миллисекундах (0 = постоянное на некоторых реализациях). Пример 10000 = 10 секунд.
  • -a — имя приложения-отправителя; не всегда отображается, но полезно для различия источников.

Пример с длительностью и приложением:

notify-send -u normal -t 10000 -i error "It Broke" "Your command failed"

notify-send -a 'Script Name' -u normal -i face-smile 'My script has a name!' 'The script did something.'

Скрипты

Уведомления из скриптов

Частое применение — оповещение по завершении длинной операции. Пример в одну строку для apt:

sudo apt update && sudo apt -y upgrade && notify-send -u normal -t 7500 -i checkbox-checked-symbolic 'Updates Complete' 'Your system updated successfully!'

Простой wrapper-скрипт установки с уведомлением (bash):

#!/bin/bash

if sudo apt install -y "$1"; then
    notify-send -u normal -t 5000 -i checkbox-checked-symbolic "Install Successful!" "$1 installed successfully"
else
    notify-send -u critical -i error "Install Failed" "$1 failed to install"
fi

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

Через SSH

Если настроен X forwarding или есть доступ к DISPLAY удалённой машины, можно отправлять уведомления по SSH:

ssh -X user@192.168.0.112 'DISPLAY=:0 notify-send -u critical -i face-worried "Remote alert" "Action required on host"'

Примечание: для этого нужны права входа и доступ к X/Wayland дисплею целевой машины. SSH-сессия отправит сообщение и завершится — она не поддерживает постоянный канал уведомлений без дополнительной настройки.

Когда notify-send не работает

  • Нет демона уведомлений в графической сессии (например, чистая TTY). Установите и запустите dunst или другой демон.
  • Вы используете Wayland без правильной поддержки DISPLAY/DBUS_SESSION_BUS_ADDRESS для удалённого вызова.
  • Вы запускаете команду под другим пользователем без доступа к сессии графического пользователя.

Альтернативные подходы

  • Использовать системные мессенджеры (Slack/Telegram) для уведомлений с сервера — полезно для headless-систем.
  • Отправлять email с уведомлением о результате — для длительных фоновых задач.
  • Использовать systemd-notify для интеграции с systemd для сервисов.

Шпаргалка флагов (cheat sheet)

notify-send 'Title' 'Message'               # базовое
notify-send -u critical 'T' 'M'            # важное
notify-send -u low -t 3000 'T' 'M'         # 3 секунды, низкий приоритет
notify-send -i face-worried 'T' 'M'        # системная иконка по имени
notify-send -i '/path/icon.png' 'T' 'M'    # кастомная иконка
notify-send -a 'MyApp' 'T' 'M'             # имя приложения-отправителя

Руководство по применению по ролям

  • Разработчик: используйте уведомления для локальных сборок, CI/test локальных прогонов, и для отладки долгих команд.
  • Системный администратор: используйте в скриптах обслуживания, чтобы знать о завершении обновлений или ошибки служб.
  • DevOps/CI: предпочтительнее интегрировать с системами оповещений (Slack, email) для кластерных сценариев.

Ментальные модели и heuristics

  • Если пользователь сидит за машиной — notify-send удобен и ненавязчив.
  • Если задача должна оповестить команду — выбирайте централизованные каналы (чат, email).
  • Для критичных оповещений используйте уровни critical и дублируйте важные сообщения в более надёжные каналы.

Безопасность и приватность

  • Не отправляйте в уведомления чувствительные данные (пароли, секреты), особенно если уведомления могут быть видны посторонним или логироваться.
  • При использовании SSH следите за правами доступа к DISPLAY и DBUS; не давайте ненужные привилегии.

Критерии приёмки

  • Уведомление появляется в графической сессии пользователя в течение ~5 секунд после выполнения команды.
  • Заголовок и текст корректно отображаются, иконка отображается (если указана).
  • В сценариях автоматизации критические ошибки отправляют уведомление с уровнем critical.

Решение “Стоит ли использовать notify-send?”

flowchart TD
    A[Нужно оповестить пользователя на локальной машине?] -->|Да| B[notify-send]
    A -->|Нет: нужно оповестить команду/удалённо| C[Slack/Email/Push]
    B --> D{Графическая сессия доступна?}
    D -->|Да| E[Использовать notify-send]
    D -->|Нет| F[Перейти к серверным каналам оповещений]

Заключение

notify-send — простой и мощный инструмент для локальных уведомлений из терминала и скриптов. Он хорошо интегрируется с окружением рабочего стола и по флагам позволяет контролировать приоритет, иконки и время жизни сообщений. Для удалённых и командных оповещений выбирайте специализированные каналы, а при использовании SSH и скриптов соблюдайте меры безопасности.

Ключевые действия: проверьте демон уведомлений, используйте -u/-t/-i/-a по необходимости и не подставляйте чувствительные данные в сообщения.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро