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 ()

Я старался сделать так, чтобы программа использовала минимум зависимостей
qt5, pyqt5, python3, git
Я старался сделать так, чтобы программа использовала минимум зависимостей

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

На гитхабе еще есть релизы, можно обойтись и без git. А Python3 есть во всех современных дистрибутивах.

Rinaldus ★★★★★ ()

Пакет бы чтоль собрал дебиановский. И людям проще, и тебе практика. Для себя практического применения не вижу, но пусть будет.

Ghostwolf ★★★★ ()

you have .. unread letters

letter — это буква
а электронное письмо — это message

Попробуй поискать то и другое слово, например, в rfc 821.

Manhunt ★★★★★ ()

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

fludardes ★★ ()
Последнее исправление: fludardes (всего исправлений: 1)

и еще приходит уведомление через mail-notify

Не очень понимаю, как это выглядит? Интеграции с уведомлениями от DE нет? Имею ввиду гном или кде.

Weres ★★★ ()

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

Всякие irssi, mcabber-ы, fetchmail-ы, mutt-ы и т.д. с этим тоже не заморачиваются, а хранят в открытом виде.

gnunixon ★★★ ()

а зачем оно нужно когда есть тхундербирд?

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

Но зачем, если можно просто использовать mail-клиент, который будет слать уведомления или сидеть в трее?

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

Ghostwolf ★★★★ ()

хранит пароли в конфигурационном файле в открытом виде
Это недочет

Ошибаешься. Читай Реймонда, автора fetchmail.

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

Потому что почтовый клиент отъедает значительно больше ресурсов по сравнению с маленьким уведомителем.

И, я так понял, Ваша программа рассчитана лишь на один почтовый ящик - а что, если их много?

Мультиаккаунты планирую сделать, но значительно позже (после фиксов всех недочетов в 1.0, скорее всего к 2.0 сделаю)

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

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

Разница в том, что при случайной утечке файла конфигурации, в случае «шифрования», злоумышленнику для получения пароля придется приложить какие-никакие усилия. То есть выцепленная бездумным grep-оп/sed-ом строка сама по себе паролем не является. А дальше в ряде случаев работает синдром неуловимого Джо.

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

а еще накалякай setup.py, загрузи на pypi.python.org и опакеч для debiana как минимум. И людям проще устанавливать будет, и распространяться быстрее станет.

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

Ты в самом деле считаешь, что это нужно? Я думал, установка и так проще некуда. Что мешает пользователю просто распаковать архив tar.gz в /opt и сделать симлинк от mail-notifier.py в /bin, чтобы не надо было каждый раз набирать полный путь?

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

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

fludardes ★★ ()

Программа по-своему уникальна, я бы никогда не стал бы браться за написание велосипеда, если бы была хотя бы одна вменяемая альтернатива.

http://goodies.xfce.org/projects/panel-plugins/xfce4-mailwatch-plugin
хзхз
з.ы. в xfce есть еще такая замечательная штука: http://goodies.xfce.org/projects/panel-plugins/xfce4-genmon-plugin , из нее можно сделать еще одну такую-же «по-своему уникальную» фигню, и зависеть будет только от выхлопа однострочника

но то такое, оффтоп

anTaRes ★★★★ ()

Это для тех, кому никто не пишет, но очень хочется чтобы писали?

bitick ()

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

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

Для этого нужно всего лишь установить Xfce как DE. :)
Есть и другие альтернативы, кстати. Я их все рассмотрел перед тем как взяться за написание своей программы.
gxMailNotify - просто замечательный плазмоид для KDE 4, он был самый лучший из всего, чем я пользовался. К сожалению, автор забил на разработку, KDE 4 сменился на KDE 5, а я сменил KDE 5 на Cinnamon.
Mail Notification - тянет половину GNOME
Про виджет для Xfce ты упомянул.
Еще я видел тонну разнообразных программ, виджетов, плагинов для браузера для GMail. Как будто на нем свет клином сошелся. А для почтового ящика в общем виде, на IMAP, никто не удосужился написать.
Ну в общем-то и все, все варианты перебрали. И еще одно добавление: я сегодня поинтересовался, что выведет гугл при забивании туда слов «Mail Notify». Так он вывел на первых 3-х строчках 3 разных программы, все 3 для винды, 2 из них - платные. Это обидно. Так что моя программа не помешает.

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

Эпичное ненужно, есть нормальные почтовики, которые и так уведомят.

DeadEye ★★★★★ ()

Эпичный велик, я такое делал шеллскриптом для плагина «button» lxpanelx (но можно любой другой поддерживающий внешние скрипты индикатор).

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

letter это прежде всего письмо и только во втором значении буква.

hope13 ★★★ ()

то он хранит пароли в конфигурационном файле в открытом виде

Давно хотел спросить: можно ли как-то зашифровать пароль в скрипте для проверки почты? Скрипт: http://pastebin.com/ZaS0ep7x

PoZorro ()

Программа по-своему уникальна, я бы никогда не стал бы браться за написание велосипеда, если бы была хотя бы одна вменяемая альтернатива.

Джо уже упоминали? Причина уникальности может в том и состоит, что мало кому нужна напоминалка о непрочитанных письмах в трее?

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

letter это прежде всего письмо и только во втором значении буква.

Жду ссылку на RFC по электронной почте

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

letter это прежде всего письмо и только во втором значении буква.

давайте сойдемся на письменах ;)

anTaRes ★★★★ ()

Я конечно понимаю, что все хотят поддержать твое начинание в разработке, но ИМХО софтина бестолковая: зачем держать отдельно нотификатор и клиент/браузер, если в последнем эта функциональность уже есть?

минимум зависимостей

Для этой задачи это С или С++ и xlib.

staseg ★★★★★ ()

Мультисерверность.

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

Не только :) https://en.wikipedia.org/wiki/Letter_(message)

Ты сам хоть читал, что по твоей ссылке написано?

Today, the internet, by means of email, plays a large part in written communications; however, these email communications are not generally referred to as letters but rather as e-mail (or email) messages, messages or simply emails or e-mails, with only the term «letter» generally being reserved for communications on paper.

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

letter это прежде всего письмо и только во втором значении буква.

Я не эксперт, но по-моему letter в первую очередь может означать только бумажное письмо. В электропочте принято message.

staseg ★★★★★ ()
Последнее исправление: staseg (всего исправлений: 1)
Ответ на: комментарий от true_admin

Я человеку подсказываю, что у него в пользовательском интерфейсе чушь написана. Зачем встревать сюда со своей ослиной эрудицией и сбивать его с толку?

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

Ты в самом деле считаешь, что это нужно?

Да. Мне нужно такое приложение. И я бы воспользовался твоим, если бы мог поставить пакет или хотя бы собрать. С другой стороны, не исключено, что сегодня вечером я это сделаю и пришлю тебе патч. Но я бы не стал сильно рассчитывать ;)

Я думал, установка и так проще некуда. Что мешает пользователю просто распаковать архив tar.gz в /opt и сделать симлинк от mail-notifier.py в /bin, чтобы не надо было каждый раз набирать полный путь?

Ну не все хотят слакварь ставить.

anonymous ()

Минимум зависимостей это либо PyQt4, либо вообще аскетичный PyGtk. А тут у нас МАКСИМУМ УПРУГОСТИ.

EXL ★★★★★ ()

А чо, только для одного почтового ящика? Что за цирк?

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

либо вообще аскетичный PyGtk. А тут у нас МАКСИМУМ УПРУГОСТИ.

Ты бы ещё vxwidgets предложил. Оно же везде, кроме линакса, выглядит инопланетянским. Памятуя об 1%, получится МАКСИМУМ НЕНУЖНОСТИ.

Manhunt ★★★★★ ()
Последнее исправление: Manhunt (всего исправлений: 1)

Есть куча почтовиков. И куча апплетов для различных DE. Но возможно кому-то пригодиться. Спасибо за труды.

sluggard ★★★★★ ()

Месье в курсе, что уведомления о почте — зло?

anonymous ()

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

t184256 ★★★★★ ()

перефразируй '1 unread letters' чтоб с числом не прыгать, типа 'Unread mail: N new'. Так неплохо. Еще можно имхо вытащить саму проверку в отдельный скрипт чтоб в случае чего быстро прикрутить к чему-то кроме 'легковесного' qt5.

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

Ты вкурсе, что твоя программа не единственная в мире? если все программы так устанавливать, то будет бардак, если удалить нужно?
Короче именно для этого придумали пакетный менеджер.

LiBer ★★★ ()

Эта штука в i3status будет нормально работать?

dead_PXL ★★ ()

Попробуй присобачить keyring (ну что бы пароль там хранить)

mystery ★★ ()

я еще не научился шифровать и расшифровывать пароли

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

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

selivan ★★★ ()
Последнее исправление: selivan (всего исправлений: 1)

QSettings(os.path.expanduser(«~»)+«/.config/mail-notifier/settings.conf», QSettings.NativeFormat)

Используй $XDG_CONFIG_HOME и .config, если он не определён. http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html Не уподобляйся Windows-программистам, у которых после установки проги на русскую винду в меню Пуск появляются «Programs».

selivan ★★★ ()

Программа по-своему уникальна, я бы никогда не стал бы браться за написание велосипеда, если бы была хотя бы одна вменяемая альтернатива.

Пока пользовался крысой на работе, юзал это: http://askubuntu.com/questions/404936/xubuntu-xfce-is-it-possible-to-have-ema...

Вполне вменяемо и работоспособно.

t3n3t ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.