Skip to content


taq edited this page Sep 13, 2010 · 10 revisions
Clone this wiki locally

Gmilk – GTK tray icon for Remember the Milk

This is a small app to list and mark as completed your today, tomorrow due and optionally tagged tasks. It shows a menu on the tray bar of a GNU/Linux system with GTK, Python and PyGTK installed. It works and was tested on a Ubuntu 9.10 system.


Just type sudo make install on a GNU/Linux system. To remove, type sudo make uninstall.


To start to use it, just type gmilk and you should see a small icon like this on your tray bar:

When you execute it on the first time, the icon will blink and show the Need to authorize message. Click on the icon (with the left or right button) to make it stops blinking and click on Authorize on the menu. It will show an dialog asking to copy a URL and paste on your browser:

Then the Remember the Milk website will ask you if you want to grant permission on your tasks to this app. Please be sure the information shown on the screen is valid. The app name and logo should reflect the same info as here. Please be sure to only get the code from here or from official packages of your distro.

After authorization, you can click on the Ok button and should get a Authorized! You should now be able to use this app now. message. Then Gmilk will connect to your task list and will blink the icon with the task count, if there were tasks found. The icon will reflect these situations:

  • No tasks
  • You have tasks only for tomorrow
  • You have tasks for today
  • You have due tasks

and will show your tasks like

You can mark a task as completed selecting it on the menu.

Tagged tasks

You can ask to verify your tasks with some specific tag. Click on Configuration and type comma separated tags. They will show below the due tasks, with submenus.


You can use Dbus to list, get info and mark a task as complete. A Gmilk Dbus client sample is something like:

import dbus, dbus.glib

bus    = dbus.SessionBus()
server = dbus.Interface(bus.get_object('com.Gmilk', '/'),'com.Gmilk.Interface')
count  = server.task_count()
task   = None

for i in range(0,count):
   task  = server.get_task(i)
   id, name, due = task
   print id, name, due

print "Marking task '%s' (id %s) as complete ..." % (name,id)
if server.complete_task(id)>0:
   print "Task '%s' marked as complete." % name
   print "There was an error marking '%s' as complete." % name

After run this code we’ll have something like:

101483345 Test! 2010-04-13T03:00:00Z
101303523 Implement Dbus on Gmilk 2010-04-13T03:00:00Z
101875494 Tomorrow test! 2010-04-14T03:00:00Z
Marking task 'Tomorrow test!' (id 101875494) as complete ...
Task 'Tomorrow test!' marked as complete.

Something went wrong with that request. Please try again.