Десктопное уведомление — это всплывающее на рабочем столе сообщение, которое оповещает о каком-либо событии.
Компьютер может прислать вам уведомление по множеству причин, не обязательно связанных с вашей текущей деятельностью: обновление ПО, новое сообщение в мессенджере, низкий заряд батареи и многое другое.
Наиболее подходящий вариант для уведомлений, которые не нуждаются в немедленной реакции пользователя, — это не интерактивное всплывающее уведомление.
Сегодня мы создадим программу, которая будет присылать такие уведомления.
Больше информации об уведомлениях в Linux можно найти в документации Gnome и в документации Arch Linux.
Подготовка
Для отправки уведомлений нам понадобится пакет для языка Python notify2, который можно установить с помощью команды pip install notify2.
Создаем Crypto-Notifier
Давайте напишем инструмент, который будет сообщать текущий курс биткоина к доллару.
Весь процесс работы программы можно разбить на три шага:
Сбор данных для отображения.
Инициализация инструмента отправки уведомлений.
Отображение данных во всплывающем уведомлении.
Сбор данных
Для получения текущего курса биткоина к доллару нам нужно извлечь данные с CoinGecko. Поскольку этот сайт не предоставляет API-интерфейса, нам необходимо получить данные из чистого HTML. Мы сделаем это с помощью библиотеки BeautifulSoup.
Нужные нам данные находятся в тегах
и
. Структура страницы показана на скриншоте ниже:
Создадим файл с названием rates.py и поместим в него следующий код:
from bs4 import BeautifulSoup
import requests
def fetch_bitcoin():
# URL с актуальным курсом
url = "https://www.coingecko.com/en/price_charts/bitcoin/usd"
headers = {'User-Agent': 'Mozilla/5.0'}
bitcoin_file = requests.get(url)
# Создаем soup-объект
soup = BeautifulSoup(bitcoin_file.text, "html.parser")
bitcoin_li = []
# Извлекаем необходимые данные из тегов
for table in soup.find_all("table", attrs={"class" : "table table-responsive mt-2"}):
for td in table.find_all("td"):
bitcoin_li.append(td.text)
del bitcoin_li[3:]
# Убираем ненужные символы из элементов списка
bitcoin_li = map(lambda s : s.strip(), bitcoin_li)
return bitcoin_li
Здесь мы определили функцию, которая возвращает детали курса в форме списка после извлечения информации по заданному url.
После получения необходимой для отображения информации нам нужно инициализировать инструмент отправки push-уведомлений, как показано ниже:
import notify2
import rates
def notify():
ICON_PATH= "полный путь до иконки"
# Получаем текущий курс
bitcoin = rates.fetch_bitcoin()
# Инициализируем d-bus соединение
notify2.init("Cryptocurrency rates notifier")
# Создаем Notification-объект
n = notify2.Notification("Crypto Notifier", icon = ICON_PATH)
# Устанавливаем уровень срочности
n.set_urgency(notify2.URGENCY_NORMAL)
# Устанавливаем задержку
n.set_timeout(1000)
Давайте пройдемся по коду шаг за шагом:
Прежде чем мы сможем отправлять какие-либо уведомления, нам нужно инициализировать D-Bus соединение. D-Bus — механизм общения между процессами (IPC), который программы под Linux используют, чтобы взаимодействовать друг с другом. Чтобы отобразить уведомление, наша программа должна подключиться через D-Bus к процессу, управляющему системным интерфейсом, и передать ему информацию об уведомлении, такую как его заголовок, текст и значок. Подробнее про то, как это устроено, можно почитать на официальном сайте, но в библиотеке notify2, которую мы используем, всё это уже реализовано. Единственное, что мы должны сделать — вызвать функцию notify2.init(), передав ей имя нашей программы, чтобы notify2 смогла установить и инициализировать подключение к D-Bus:
notify2.init("Средство уведомления о курсе криптовалют")
Затем мы создаем объект уведомлений:
n = notify2.Notification("Crypto Notifier", icon = ICON_PATH)
ЦЕРН и Фермилаб переходят на AlmaLinux для управления Большим адронным коллайдером после завершения поддержки Scientific Linux. Новый выбор обеспечивает долгосрочную стабильность, улучшенную безопасность и поддержку до 2032 года для ключевых научных проектов
Релиз Python 3.13 принес возможность отключения GIL, что значительно улучшает производительность многопоточных приложений. Отключение GIL позволяет потокам работать параллельно, открывая новые горизонты для многопоточной обработки данных.
DOOM портировали на квантовые компьютеры, получив Quandoom. Эта версия использует 70 000 кубитов и 80 миллионов квантовых вентилей, однако пока такие квантовые компьютеры не готовы, игру можно симулировать на обычном ПК