UnityMailWebMailNotification
Unity Mail: Webmail Notification on Your Desktop - Instructors: mitya57
So, let's start I'm Dmitry Shachnev, currently student at Moscow University I am developer of Unity Mail, ReText (retext.sf.net), TQ Educational suite (tq-suite.sf.net) and some other things Since my first distro was Mandriva, I'm also known as Mandriver Unity Mail is an application that displays unread messages count on your Launcher, as well as Notify-OSD notifications and mail subjects in Messaging Menu (this is currently only for Oneiric) It works with any IMAP4 or IMAP4-SSL server, not only with GMail as some people think It also support multiple accounts *supports It's written in Python and uses GObject-Introspection, I'll say more about this later Three days ago I released the new version, 0.8 (the Natty backport will come soon, too) It has Messaging Menu integration and new configuration dialog Screenshot: http://ubuntuone.com/4VNpTopZZxmGN2fyXY4ZmD It's also the first release working on Oneiric So, now about used technologies GObject-Introspection (http://live.gnome.org/GObjectIntrospection) is a new GNOME framework for accessing C-language API in many languages, such as Python, Vala, and so on In Ubuntu, Python bindings are provided by python-gobject package The most known component is Gtk API, which allows working with both Gtk2 and Gtk3 It's recommended alternative for PyGtk, read more about porting here: http://live.gnome.org/PyGObject/IntrospectionPorting But there are many other bindings, You can use any API provided by gir1.2-* packages Here is Unity Mail's import string: from gi.repository import GObject, GLib, Gtk, Unity, Notify, Indicate The last three are Ubuntu-specific technologies, so let's speak more about them Unity Launcher API provides a way to set a count badge or a progress-bar for a specific .desktop file https://wiki.ubuntu.com/Unity/LauncherAPI This page contains an overview and code examples for Python and Vala Indicate API It provides a way to add an indicator to your panel, or integrate with existing menu (Messaging Menu in my case) I used this page as a documentation: http://www.kryogenix.org/days/2011/01/16/working-with-the-ubuntu-messaging-menu Note that UM doesn't make that envelope blue or green, it just add some items If you want to add your items to Messaging Menu, you'll need to set up a server (basically the container connected to a .desktop file_ and any number of clients (entries) Each entry can contain a time (which'll be displayed like "30 min" or "2 h") or just a number (count), i.e you can add a client titled "Inbox" with a mails count Time in UM case Then, Notify API You SHOULD NOT use pynotify because it is based on Gtk2 and is deprecated Gir-Notify usage is very simple, like this: Notify.init('unity-mail') Notify.Notification.new(title, message, icon).show() You can see more advanced-usage examples in 'tests' directory of libnotify tarball And there is one another important component - GNOME Keyring Currently there's no Gir for it - wait a moment, I'll find a bug about that It's https://bugs.launchpad.net/ubuntu/+source/libgnome-keyring/+bug/802173 and https://bugzilla.gnome.org/show_bug.cgi?id=598414 for upstream so we use python-gnomekeyring binding, which is the only reason for us not moving to Python3 Also, it adds a Gtk2 dependency, so I really don't like it You can read more about it here: http://blogs.codecommunity.org/mindbending/bending-gnome-keyring-with-python-part-1/ Credits to Andre Ryser who added GNOME Keyring support to UM Now a bit about translations UM uses gettext for translations and Launchpad for hosting them Also, it uses desktop2gettext script to generate .po (source) files from .desktop files (There are actually 2 desktop files used in UM: The main, that displays in Launcher, and another one which is copied to your ~/.config/autostart/ directory and is used for auto-starting Unity Mail) http://bazaar.launchpad.net/~chromium-team/chromium-browser/chromium-translations-tools.head/view/head:/desktop2gettext.py (Originally it was developed for Chromium) More about gettext: http://docs.python.org/library/gettext.html More about using Launchpad for translating your project: https://help.launchpad.net/Translations/YourProject There were even 2 sessions about this in previous AppDeveloperWeek And also we use Bazaar for hosting code. Now - some future plans for Unity Mail You know why Unity Mail is better than other mailing clients (like Thunderbird and Evolution) First, it's written especially for WebMail services When you click it's icon your mail is opened in a web browser It uses GMail links by default, but you can set your own in the new configuration dialog You can even set a custom command by starting the URL with 'Exec:' dpm, I plan to release 1.0 firstly dpm asked: have you thought about submitting Unity Mail for inclusion in Ubuntu? And I'll release it when there will be a gir for gnomekeyring and I'll be able to use Py3K So, some ideas for future versions: - More configuration options, like disabling Messaging Menu or even Unity Launcher :) - "Mark all as read" option - (I don't yet know if it's possible) - Opening a mail when you click on it in the Messaging Menu - And it really needs a new icon, maybe someone will help me with it? So, I think, that's all Please ask your questions There are 10 minutes remaining in the current session. gnomie asked: if i decided to give UM a try, will it conflict with thunderbird (which is already set up)? gnomie no, it won't is now known as jelmer If I have another five minutes, I'll advertise my another app - ReText editor It's an editor for markup languages, such as Markdown and reStructuredText It allows you to control all your formatting and storing documents in plain text files But it supports export to ODT, PDF, HTML and whatever you want via plugins Also it can upload documents to Google Docs And it supports tabs, which is very useful feature Screenshot: https://sourceforge.net/p/retext/screenshot/retext.png Web-site: http://retext.sourceforge.net/ There are 5 minutes remaining in the current session. It's available in my PPA, too (ppa:mitya57) thanks mitya57 for a great session! So, good bye (=
MeetingLogs/appdevweek1109/UnityMailWebMailNotification (last edited 2011-09-08 12:53:41 by dpm)