Как стать автором
Поиск
Написать публикацию
Обновить

Finch и оповещения

Здравствуй, Сообщество!
Сменив давно используемый Pidgin на его консольный аналог Finch столкнулся с отсутствием оповещений о новых сообщениях. Увы, по результатам Google вопрос решался либо возвратом обратно к Pidgin, либо простынями перловых скриптов, перехватывающих dbus — сообщения, «парсящих» самих себя ну и т.д. Для себя я нашел гораздо более простое решение.

Оговоримся сразу — мне требовалась лишь индикация о приходе нового сообщения. Если бы я хотел видеть иконки контактов, их статусы и прочие интересности я бы остался на Pidgin.
Оповещения можно (как я понял из результатов своих поисков) выводить через DBus. Немного полистав форумы, наткнулся на довольно интересную, на мой взгляд, библиотеку — libnotify. Смысл в том, что эта библиотека выдает сообщения из dbus, при этом оформляя их в соответствии с системными настройками нотификации. Пример использования библиотеки уже был описан в habrahabr.ru/blogs/ubuntu/78501.
Если в предыдущем примере все понятно — графическое приложение, в принципе, должно уметь взаимодействовать с пользователем средствами оповещений, то консольный Finch даже не подозревал о такой возможности. Научим!
Шаг 1. Установили библиотеку. Тут все понятно.
Шаг 2. Тестируем. Выполните notify-send test, почитайте man. Тоже ничего сложного.
Шаг 3. Привязываем нотификацию к Finch. В меню клиента идем в категорию звуки, в открывшемся окне создаем собственный профиль оповещения, метод — команда, в строку «команда для воспроизведения звука» пишем уже известное тестовое notify-send test. Изменения сохраняем, тестируем. Работает!
Шаг 4. Наводим красоту. Меня смутили 2 вещи. Первая — сообщение пропадало через 10 секунд (зазевался -> пропустил нотификацию -> не ответил на сообщение). Вторая — путь к звуковому файлу в нижней строке. И если первое решалось указанием параметра -t <сколько секунд выводить сообщение>, решения для второй неприятности я так и не нашел. Я думаю, Finch передает команде путь к стандартному звуковому файлу при отсутствии иных указаний, что и выводится в notify — сообщении. ОК, если параметр передается и не может быть игнорирован командой, «обернем» ее в простенький скрипт:
#!/bin/bash
killall dbus-launch
sleep 3
notify-send -t 0 "Finch - Есть новые сообщения!"

Сразу говорю, скрипты я не знаю вообще, плюс к этому использую два огромных, на мой взгляд, костыля — поскольку сообщение висит на экране до тех пор, пока я его не закрою, в случае прихода новых сообщений нотификации будут выстраиваться колонками на моем десктопе, по-этому перед каждым запускам скрипта убиваются все выведенные сообщения. Если пропустить строку sleep 3, то сообщения не выводятся. Опытным путем было взято наименьшее время.
Шаг 5. Дальнейшие украшательства. Теперь можно указать положение текста, иконку и т.д. по желанию — информация по настройке notify-send: habrahabr.ru/blogs/linux/47892.
Спасибо за внимание!
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.