Отправляем push-уведомления на рабочий стол в Linux с помощью Python
Создадим программу, которая будет присылать не интерактивное всплывающее уведомление, показывающее актуальный курс биткоина к доллару.

Десктопное уведомление — это всплывающее на рабочем столе сообщение, которое оповещает о каком-либо событии.
Компьютер может прислать вам уведомление по множеству причин, не обязательно связанных с вашей текущей деятельностью: обновление ПО, новое сообщение в мессенджере, низкий заряд батареи и многое другое.
Наиболее подходящий вариант для уведомлений, которые не нуждаются в немедленной реакции пользователя, — это не интерактивное всплывающее уведомление.
Сегодня мы создадим программу, которая будет присылать такие уведомления.
Больше информации об уведомлениях в Linux можно найти в документации Gnome и в документации Arch Linux.
Подготовка
Для отправки уведомлений нам понадобится пакет для языка Python notify2, который можно установить с помощью команды pip install notify2.
Создаем Crypto-Notifier
Давайте напишем инструмент, который будет сообщать текущий курс биткоина к доллару.
Весь процесс работы программы можно разбить на три шага:
- Сбор данных для отображения.
- Инициализация инструмента отправки уведомлений.
- Отображение данных во всплывающем уведомлении.
Сбор данных
Для получения текущего курса биткоина к доллару нам нужно извлечь данные с CoinGecko. Поскольку этот сайт не предоставляет API-интерфейса, нам необходимо получить данные из чистого HTML. Мы сделаем это с помощью библиотеки BeautifulSoup.
Нужные нам данные находятся в тегах и . Структура страницы показана на скриншоте ниже:
Создадим файл с названием rates.py и поместим в него следующий код:
Здесь мы определили функцию, которая возвращает детали курса в форме списка после извлечения информации по заданному url.
Инициализация инструмента отправки push-уведомлений
После получения необходимой для отображения информации нам нужно инициализировать инструмент отправки push-уведомлений, как показано ниже:
Давайте пройдемся по коду шаг за шагом:
Прежде чем мы сможем отправлять какие-либо уведомления, нам нужно инициализировать D-Bus соединение. D-Bus — механизм общения между процессами (IPC), который программы под Linux используют, чтобы взаимодействовать друг с другом. Чтобы отобразить уведомление, наша программа должна подключиться через D-Bus к процессу, управляющему системным интерфейсом, и передать ему информацию об уведомлении, такую как его заголовок, текст и значок. Подробнее про то, как это устроено, можно почитать на официальном сайте, но в библиотеке notify2, которую мы используем, всё это уже реализовано. Единственное, что мы должны сделать — вызвать функцию notify2.init(), передав ей имя нашей программы, чтобы notify2 смогла установить и инициализировать подключение к D-Bus:
notify2.init("Средство уведомления о курсе криптовалют")
Затем мы создаем объект уведомлений:
n = notify2.Notification("Crypto Notifier", icon = ICON_PATH)
Общая структура объекта уведомлений:
notify2.Notification(summary, message='body text', icon=ICON_PATH)
При желании мы можем установить уровень срочности с помощью метода set_urgency:
Другие доступные константы: notify2.URGENCY_LOW, notify2.URGENCY_CRITICAL.
Также мы можем установить задержку между отправкой уведомлений:
Отображение контента
С инициализацией покончено, займемся отображением уведомлений. Во фрагменте кода ниже показано, как это можно сделать:
Проанализируем код:
- Сначала мы формируем контент для отображения, используя список, возвращенный функцией
fetch_bitcoin. - Затем мы передаем этот контент нашему инструменту для отправки уведомлений.
- И наконец мы показываем уведомление с помощью
n.show().
В конечном итоге у нас должно получиться что-то вроде этого:












