The closest application to what I need is KArm, but it has some disadvantages.
- It's KDE-based, while I prefer GNOME
- It has lost data on system crashes
- It misses some functionality I'd like to have
There is a time tracker for GNOME, named GnoTime, but it's lacking one of the most important features: automatic timing based on virtual desktops. Without it, the application is pretty useless, as I'm not going to start and stop the timers manually because I switch between tasks a lot and it would consume too much time.
So, here's a description of my ideal time tracking application:
- A list of projects (with names).
- Each project can be bound to (any) virtual desktops. One project can be bound to many desktops and one desktop can be bound to many projects.
- When a desktop is active (user is on the desktop), the time is counting for all the projects assigned to this desktop.
- Time grain is small (5 seconds?).
- When the system or application crashes, only the small amount of time should be lost. It means that changes should be written to the disk very often. Losing the time counts from the whole day is unacceptable.
- Idleness detection. If user was idle for specified period of time, a dialog window is displayed. User can choose, whether to count or not count the idle period.
- Time counts for projects are automatically divided by days, so user can view counts for each day. The day starts at 5 am.
- The user can view aggregated time counts, for example monthly.
I don't really need a graphical user interface for this. The program can read text configuration files, run as a daemon and store the timings somewhere, so I can read them. The only necessary interaction with the graphical environment are a detection of the current desktop and the idleness dialog box.