Добавить в корзинуПозвонить
Найти в Дзене

Настраиваем пользовательские уведомления в любой дистрибутив Linux

Мы привыкли к тому, что программное обеспечение, установленное в нашем дистрибутиве Linux взаимодействует с нами при помощи уведомлений. Будь то сообщения о наличии обновлений, завершение какой-либо операции с файлами или (не приведи святой Линус) какая-либо системная ошибка. Уведомления в большей части дистрибутивов настраиваются, про что на канале неоднократно выходили статьи, ссылки на которые оставлю ниже. Но можно ли добавлять собственные уведомления и объединить их с какими-либо пользовательскими действиями, например, по автоматизации рутинных задач? На самом деле, можно и ниже на простой задаче, которую нужно было решить, покажу, как это сделать. Чтобы не пропустить новые материалы подпишитесь на Дзен-ридер, где уведомления о статьях появляются быстрее, чем посты попадутся в ленте Дзена. Помните, недавно на канале я рассказывал о простом способе управления SSH-подключениями при помощи файла config? Если не читали статью, то переходите по ссылке ниже, чтобы понять о чём речь и по
Оглавление

Мы привыкли к тому, что программное обеспечение, установленное в нашем дистрибутиве Linux взаимодействует с нами при помощи уведомлений. Будь то сообщения о наличии обновлений, завершение какой-либо операции с файлами или (не приведи святой Линус) какая-либо системная ошибка. Уведомления в большей части дистрибутивов настраиваются, про что на канале неоднократно выходили статьи, ссылки на которые оставлю ниже.

Но можно ли добавлять собственные уведомления и объединить их с какими-либо пользовательскими действиями, например, по автоматизации рутинных задач? На самом деле, можно и ниже на простой задаче, которую нужно было решить, покажу, как это сделать.

Чтобы не пропустить новые материалы подпишитесь на Дзен-ридер, где уведомления о статьях появляются быстрее, чем посты попадутся в ленте Дзена.

Дзен-ридер

📑 Описание стоящей задачи

Помните, недавно на канале я рассказывал о простом способе управления SSH-подключениями при помощи файла config? Если не читали статью, то переходите по ссылке ниже, чтобы понять о чём речь и потом возвращайтесь сюда.

В тексте я говорил о том, что файл config хранится в Яндекс Облаке и в папку .ssh пробрасывается его симлинк. Но в последнюю установку дистрибутива, которым пользуюсь сейчас, забыл сделать симлинк. Поэтому сейчас надо автоматизировать синхронизацию того файла, что лежит локально с тем, который расположен в облаке. Не руками же копировать его периодически Выполнять синхронизацию конечно же будем посредством планировщика Cron. О нём неоднократно писал на канале и просто оставлю ссылки на эти материалы.

Помимо самого крон-задания мне захотелось получать уведомления об успешном копировании файла в папку Яндекс Облака. И вот эту часть мы рассмотрим подробнее, но после того, как определимся с тем, какой командой надо синхронизировать два файла.

⏰ Пишем cron-задание

Практически в самом начале наполнения канала я сделал отличный цикл статей по основным командам для операций с файлами и папками в Linux. Одним таким материалом, подходящим нам в рамках задачи, поделюсь ниже.

Соответственно, нам необходима команда cp (copy) которой мы будем брать локальный файл и копировать его в папку с Яндекс Диском. Ничего сложного, в общем. Поэтому открываем терминал, вводим в него команду crontab -e, чтобы изменить cron-задание и вносим туда следующие строки:

Задание cron для копирования файлов
Задание cron для копирования файлов

В принципе, в строках нет ничего непонятного: в начале каждого дня (то бишь, в полночь) будет происходить копирование файла .config из одной папки в другую. Повторюсь, ничего сложного, осталось лишь добавить уведомления.

🔔 Пользовательские уведомления

Системные уведомления, которые вы видите обычно от программ отправляются при помощи утилиты notify-send. Она есть в любом дистрибутиве Linux, который используется графический интерфейс для взаимодействия с пользователем. Если же, каким-то чудом у вас её не оказалось, то установить можно следующими командами.

Fedora и основанные на ней дистрибутивы

sudo dnf install libnotify

Debian и всё, что на нём основано

sudo apt install notify-send

Archlinux и производные от него

sudo pacman -S notify-send

После установки мы возвращаемся к редактированию cron-задания и добавляем туда следующую строку.

Добавляем в cron-задание уведомление
Добавляем в cron-задание уведомление

На самом деле в утилите notify-send доступно много ключей и параметров, но мне нужно лишь просто отправить сообщение об успешном копировании файла. Вы же знаете, что на случай чего есть другая утилита, под названием man? Если нет, то статья ниже как раз для вас.

Что за два амперсанда между командами на копирование и отправкой уведомлений? Это оператор, который позволяет запускать вторую команду только в случае, если первая будет успешно выполнена. То бишь, если копирование не произойдёт, то и уведомления не будет.

🧪 Давайте протестируем итоговый вариант

Не забываем сохранить наше cron-задание, а после проверить, что всё отображается корректно при помощи команды crontab -l.

Просматриваем ранее добавленное cron-задание
Просматриваем ранее добавленное cron-задание

Но не ждать же теперь наступления полуночи, чтобы проверить работают ли уведомления! Просто копируем команду на копирование и отправку уведомления, вставляем в терминал и жмём Enter.

Результат работы команды копирования и уведомление об его успешном окончании
Результат работы команды копирования и уведомление об его успешном окончании

Появилось всплывающие OSD-уведомление, которое привычно для всех пользователей среды рабочего окружения GNOME, а значит мы всё настроили правильно и оно работает.

🏁 Вместо заключения...

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

Ну за такой полезный материал грех не поставить лайк, написать комментарий и подписаться на канал! Давайте обратную связь, так как она позволяет работать над качеством постов и делать контент только лучше.