Уведомления 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 по необходимости и не подставляйте чувствительные данные в сообщения.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента