LINUX.ORG.RU

Mail Notifier — уведомлялка о непрочтенных письмах для системного трея

 , , , ,


1

2

Позвольте представить вам мою первую программу: Mail Notifier. Она находится в системном трее, периодически проверяет почту и уведомляет о непрочтенных письмах. Когда приходит новое письмо, иконка меняет свой цвет (со значка белого конверта на красный) и еще приходит уведомление через mail-notify (эту опцию при желании можно отключить в настройках). Для проверки почты программа использует протокол IMAP4.

Зависимости:
Я старался сделать так, чтобы программа использовала минимум зависимостей. Поэтому ей для запуска требуется только то, на чем ее написали: PyQt5 для Python3. Пакет в разных дистрибутивах называется по-разному, для дистрибутивов семейства Ubuntu это python3-pyqt5.

Установка:
Просто сделайте Git clone в моего репозитория в любую папку, после чего запустите mail-notifier.py. При первом запуске откроется окно с настройками, где необходимо вбить всю нужную информацию о почтовом ящике. В окне с настройками есть кнопка для теста введенных параметров перед нажатием на ОК.

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

Скриншот 1

Скриншот 2

Скриншот 3

>>> Исходный код

★★★★★

Проверено: fallout4all ()
Последнее исправление: fallout4all (всего исправлений: 8)

Qt - это сила! Молодец, парень! :)

anonymous
()
Ответ на: комментарий от bitick

И да, помнится в KDE был такой плазмоид.

В KDE вообще плазмоиды на все случаи жизни! Но программка все-равно полезная.

anonymous
()
Ответ на: комментарий от Rinaldus

я сегодня поинтересовался, что выведет гугл при забивании туда слов «Mail Notify»

И как изменилась выдача с появлением вашей программы?

slonopotamus
()

Поздравляю) Это хорошая вещь!

neon1ks ★★
()

Для проверки почты программа использует протокол IMAP4.

А тем, у кого почта приходит, к примеру, в /var/mail/${USER}, придется ещё и IMAP-сервер себе поднять чтобы ей пользоваться?

anonymous
()
Ответ на: комментарий от Rinaldus

Погуглил, кстати, по вашей фразе. Помимо того, что гугл предлагает искать «notification» вместо «notify», на третьем месте http://www.nongnu.org/mailnotify/ . Может, вы просто виндузятник и поэтому вам впаривают платный виндовый софт?

slonopotamus
()
Ответ на: комментарий от Manhunt

mutt в такой ситуации говорит просто: «New mail in /path/to/mailbox»

anonymous
()

замени красную иконку на чтонибуть другое..

ZuBB ★★★★★
()

периодически проверяет почту

Зачем так делать? Это должна делать почтовая программа и показывать уведомления в трее.

FriendlyFire
()
Ответ на: комментарий от selivan

Расшифрованные всё равно хранить придётся, так устроен протокол. Сделай возможность защищать их мастер-паролем, и храни только в памяти. Неплохо, если прикрутишь интеграцию с gnome-keyring(нынче он seahorse). И принудительно выставляй на файл с паролями, шифрованным или нет, chmod 0600.

Помнится, в PHP когда мне требовалось зашифровать пароль в базе данных, я делал примерно так:

encrypted = md5(a);
Соответственно для чтения и расшифровки:
md5(decrypted) = encrypted;
decrypted = ...
Так вот, в Python такой алгоритм не прокатывает. Я даже функцию hash() (отнюдь не с помощью md5) там заготовил, но на расшифровке застрял. Поэтому решил все же выпустить версию 1.0 без шифрования и доделать это в последующих версиях.
К gnome-keyring прикручивать однозначно не хочу, т.к это потянет за собой половину гнома, и моя программа не будет ничем отличаться от mail-notification. Мне кое-кто советовал модуль Python под названием Keyring. Посмотрю его поподробнее, а может найду что-нибудь еще. В общем, буду искать.

Rinaldus ★★★★★
() автор топика
Последнее исправление: Rinaldus (всего исправлений: 2)

+

Да, то что сломали нотификацию в последних версиях Thunderbird в Cinnamon сильно расстраивает. Можно попробовать, спасибо.

anonymous
()
Ответ на: комментарий от Rinaldus

Ну в общем-то и все, все варианты перебрали.

Gnubiff забыл. Раньше юзал её.

ivn86
()
Ответ на: комментарий от Rinaldus

зашифровать пароль в базе данных, я делал примерно так:

на расшифровке застрял

Потому что хэширование это не есть шифрование. Тебе нужно, например, вот это: http://stackoverflow.com/questions/30563337/encrypt-file-in-python-with-aes

И вообще, гугли python encrypt file, есть множество решений проблемы. Думаю, даже есть уже готовые обёртки для шифрования типа encrypt_open() вместо open()...

Но, честно, я бы не стал заморачиваться. Параноики либо заюзают apparmor/selinux, либо запустят от другого пользователя. В общем, тут у ОС хватает встроенных средств чтобы не изобретать велосипед.

true_admin ★★★★★
()
Ответ на: комментарий от anonymous

А тем, у кого почта приходит, к примеру, в /var/mail/${USER} …

… уже ничего не поможет.

anonymous
()

Не ставил. По коду, привести все к pep8, особенно названия функций и методов. CamelCase для функций некрасиво, и возникает путаница. По функционалу, идея - для разных аккаунтов использовать свою иконку в трее. Добавить кнопку в меню для перехода на сайт.

ivlevdenis
()
Ответ на: комментарий от Rinaldus

Да, в тексте. В любом случае, угадай, на чем написана unity mail и что она умеет.

Aceler ★★★★★
()
Ответ на: комментарий от ivlevdenis

По коду, привести все к pep8, особенно названия функций и методов.

О, да. +1.

Есть такая утилита — pylint, рекомендую

Manhunt ★★★★★
()
Ответ на: комментарий от Rinaldus

Хеширование - это не шифрование, это необратимое изменение данных. Почитай про это.

gnome-keyring прикручивать однозначно не хочу, т.к это потянет за собой половину гнома

Прикрути опционально, есть keyring - использует, нету - не использует.

selivan ★★★
()
Ответ на: комментарий от Manhunt

Ну и после uuencode можно ещё пройтись rot13, чтобы сложность для всяких автоматизированных червей-собиралок_паролей стала запредельной.

Manhunt ★★★★★
()

Очень не хочется обижать человека, выложившего свою первую программу, но минимум зависимостей - это таки C или хотя бы C++, но никак не питон.

Впрочем, всё равно поздравляю.

hobbit ★★★★★
()
Ответ на: комментарий от ivlevdenis

Про PEP-8 поддерживаю.

CamelCase для функций некрасиво

Это верно, но кути, по-моему, навязывают его. Во всяком случае, когда-то давно так было. И тут уже возникает вопрос: заветная consistency — она в следовании PEP-8 в половине программы или в следовании чему угодно, но одинаково во всей программе?

Насчет самой проги — Питон точно везде есть, а кутей легко может не быть (особенно пикутей, хотя, возможно, щас как-то иначе всё). Поэтому лучше либо сделать клиент/плагин к чему-то для определенной среды, или более универсальное нечто, но тогда предусмотреть больше вариаций. Например, мне ни кутей, ни трея не надо (вроде, трея и нету). Зато, как выше уже отмечали, в i3status воткнуть эту штуку было бы здорово (хинт: просто текст в какой-то файл писать). Уведомления откуда-то из трея, ессно, тем более не нужны; а стандартные через libnotify или кого там (у меня dunst занят отрисовкой, в убунте что-то другое) — самое то.

Ну и да, не надо слишком заморачиваться «выпуском версии 1.0», «следующей стабильной версией» и прочая; это всё игры и тренировка. И эта программа, и следующие десять разных программ — их нужно делать как можно лучше, как можно разнообразнее, но не жалеть их и не гордиться ими. Они на выброс. С другой стороны, что забавно, выше взлетает обычно самая мелкая и тривиальная программка, выполняющая всего одну задачу, но делающая это хорошо. Качественное исполнение гениальной идеи, скорее всего, сдохнет где-то в углу. Надежда на то, что сабж внезапно выживет — есть. Но его надо радикально упростить, разрезать на слои и сделать максимально незаметным. Людям пофиг на программы, им нужно работать. Если какая-то программа незаметно помогает человеку работать, она у него приживается. Если программа уважает привычки (и придури) многих людей, она приобретает широкое распространение.

amix ★★★
()
Ответ на: комментарий от Weres

Интеграции с уведомлениями от DE нет? Имею ввиду гном или кде.

В них notify-osd отлично работает, вы про какую интеграцию?

FIL ★★★★
()
Ответ на: комментарий от FIL

Notify-osd это ведь для Ubuntu программа? Вот у меня федора, окружение гном. Мне хочется, что бы всё используемые программы выводили системные единообразные уведомления, которые останутся на верхней панели, даже если я отошёл погулять. Впрочем, автор делал ДЕ независимую программу, наши цели различны.

Weres ★★★
()
Ответ на: комментарий от Weres

Да их много «реализаций» всяких. Не суть, notify-send работает.

FIL ★★★★
()
Ответ на: комментарий от DeadEye

а kde может уведомлять даже при не запущенном kmail, но средствами akonadi

grem ★★★★★
()

Это конечно хорошо что Вы что-то пишете но я бы постеснялся публиковать новость о таком.

shtepsell
()

Регулярно подобные костыли пишу, тоже публиковать?

ritsufag ★★★★★
()

Для проверки почты программа использует протокол IMAP4

ну и нахрен мне это надо? IMAP4 я любым клиентом посмотрю, а вот для аутлуковского OWA приходится вкладку в браузере держать и заново логиниться раз несколько раз за рабочий день

anonymous
()

очень нужен cd-ejecter в трее!

anonymous
()
Ответ на: комментарий от anonymous

ну и нахрен мне это надо? IMAP4 я любым клиентом посмотрю, а вот для аутлуковского OWA приходится вкладку в браузере держать и заново логиниться раз несколько раз за рабочий день

Ну ты лалка. Держи, не благодари. Как его в Greasemonkey вкрячить сам разберёшься. Скриптецкий каждую минуту нажимает на кнопку обновления содержимого ящика, что сразу же ресетит все клинетские и серверные счётчики неактивности пользователя. Сутками не вылогинивает.

anonymous
()
Ответ на: комментарий от Ghostwolf

почту можно тут же посмотреть в уже открытом браузере

Наркомания

Valkeru ★★★★
()

Вот если бы оно умело проверять почту на письмо.рф цены бы не было. Ни одна почтовая программа не работает, приходится только вэб интерфейс использовать.

petyanamlt ★★★★
()
Последнее исправление: petyanamlt (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.