Timesheet

11/10/06

Há 1 mês atrás vi no The Apple Blog um artigo sobre um aplicativo chamado On The Job. Apesar de achá-lo muito legal, ele é para OSX, além de não ver muita utilidade. Achava isso até o começo desta semana.

Tive que preencher um timesheet e procurar por e-mails de 3 meses atrás para saber o que precisei fazer não foi uma das experiências mais agradáveis. Então, comecei a procurar alternativas para o Linux. No Synaptic, encontrei Worklog e o GnoTime. O primeiro roda em linha de comando e, apesar de gostar de linha de comando, definitivamente não era para mim. O segundo parecia ser interessante, mas não entendi como funciona. Juro que tentei, mas depois de 5 minutos, desisti.

Então, resolvi fazer meu próprio software! Se você adivinhar qual nome eu dei, ganha uma bala! Yep! É Timesheet. A idéia é fazer com que ele sempre fique no tray, para me lembrar que tem uma tarefa em execução. Assim, posso alternar entre elas de maneira muito simples. Quando o Timesheet estiver no tray, você verá algo como:

Timesheet no tray

Se você clicar no tray, a janela do Timesheet aparecerá:

Janela do Timesheet

O context menu será parecido com isto:

Context Menu do Timesheet

Uma funcionalidade que é fundamental é detectar se o screensaver está ativo ou não. Dessa maneira, posso definir o que quero fazer com o tempo "ocioso". Entre aspas porque nesse meio tempo posso estar fazer uma outra tarefa relacionada ao projeto e que não necessariamente seja no micro (reuniões, etc). Fiz alguns testes usando o D-BUS e é bem simples de fazer isso usando o Gnome Screensaver, que vem com o Ubuntu Dapper.

Esse fim de semana vou tentar terminar uma versão usável deste aplicativo. Você que usa timesheet: tem alguma funcionalidade que você gostaria que tivesse?

Notificações usando D-BUS

11/10/06

Se você quer exibir notificações no seu aplicativo da mesma maneira que Rhythmbox faz, você pode usar o D-BUS, que faz a interface para você de maneira muito simples.

#!/usr/bin/env python
 
import dbus
 
icon = '/usr/share/icons/Human/48x48/devices/gnome-dev-cdrom-audio.png'
title = 'Listening to Sugarcult'
text = 'Album: Lights Out\nSong: Dead Living\nTrack: 2'
 
bus = dbus.SessionBus()
obj = bus.get_object('org.freedesktop.Notifications', 
                    '/org/freedesktop/Notifications')
dbus_notify = dbus.Interface(obj, 'org.freedesktop.Notifications')
dbus_notify.Notify("notify", 0, icon, title, text, '', {}, 4000)

Veja como fica legal:

Notificação usando D-BUS

Update: Se você quiser posicionar sua notificação, você pode usar os atributos "x" e "y":

dbus_notify.Notify("notify", 0, icon, title, text, '', {'x': 500, 'y': 500}, 4000)