gtimelog is a great tool to keep track of the time you spend on your work. To me, its major advantage is to log the time at the end of the task and not at the beginning.
The format of the entry should be : {Category} : {Task}
It has a useful reporting functionality that will craft an email with the details of your tasks with the time spent on each one. When used with the format described above, the reporting will be done according to each {Category} and a summary of the categories with the sum of the time spent on each.
The GUI is very simple :
There is one line at the bottom that let you enter the task you have just completed. Tasks are logged in a flat text file so it is very simple to use.
Command Line Interface (CLI) helper : tl.py
Since I spend most of my time using the CLI in a shell environment, I thought that it would be useful to log my gtimelog entries using a one line command. So I wrote a simple python script called tl.py that will add one entry in the gtimelog log file with the correct timestamp format.
You can download the script here : https://github.com/karibou/tl
The other motivation for this script is to maintain the same spelling for each repetitive task, so the accounting remain coherent. It also avoids to have to retype the same information over and over.
So when I start a new day, I simply let gtimelog know that a new day is starting by typing :
$ tl.py new
This will add the new : Arrived entry in gtimelog.
The categories that I use most frequently are hard coded in the script :
'ua': 'L3 / L3 support', 'up': 'Upstream', 'ubu': 'Upstream Ubuntu', 'meet': 'Internal meetings', 'pers': 'Personal management', 'skill': 'Skills building', 'know': 'Knowledge transfer', 'team': 'Team support', 'comm': 'Community Involvment',
You can modify those to your own needs by editing the script.
To list each category available, just use ? as the argument :
$ tl.py ? Categories : ['comm', 'know', 'meet', 'pers', 'skill', 'team', 'ua', 'ubu', 'up']
When I enter a new task, I simply use the syntax :
$ tl.py ubu : LP1104303 : gtimelog missing icon
ubu corresponds to the category of the task (Upstream Ubuntu) and whatever comes after the colon is the task.
The next time I want to report activity against this task, I simply use the script with the category of the task only and it will list all existing tasks for that category :
$ tl.py ubu 1) LP1104303 : gtimelog missing icon 2) sosreport CVE-2015-7529 3) nut merge 4) LP: #1318111 - repetitive crashkernel= 5) liblinear library transition 6) makedumpfile packaging 7) LP1506550 - quassel sound bug 8) Xenial upgrade 9) sosreport autopkgtests for SRU 10) LP: #1496317 - kdump OOM killer failure Select task (0 to exit,<CR> to continue):
Entering the task index number will add a new entry in gtimelog. If more than 10 tasks are available, enter <CR> to continue the listing of the tasks.
Using tl.py from multiple systems
It may be useful to be able to log your activity from multiple systems. For instance, you may be working off your laptop while travelling and a desktop at home. One possibility to achieve this is to use Cloud storage services like Dropbox and share the text file that holds your gtimelog tasks.
On Ubuntu, the file is located at $HOME/.local/share/gtimelog/timelog.txt
If you replace this file by a symbolic link to a file stored in the directory shared in the cloud, you can access the same file from different systems.
The Dropbox example
I already have my Dropbox files shared on my laptop so there is a ~/Dropbox directory available. To host my gtimelog file, I create a gtimelog directory and copy the timelog.txt file there :
$ mkdir ~/Dropbox/gtimelog $ cp ~/.local/share/gtimelog/timelog.txt ~/.local/share/gtimelog/timelog.bak $ mv ~/.local/share/gtimelog/timelog.txt ~/Dropbox/gtimelog $ ln -s ~/Dropbox/gtimelog/timelog.txt ~/.local/share/gtimelog/timelog.txt
By doing using such a configuration on each system where you want to enter gtimelog tasks, you will be able to share your gtimelog data in an easy manner.
Using tl.py on Ubuntu Server
In my specific case, I needed to go one step further : my second system is a server which does not have a graphical interface. Using this[1] blog entry, I was able to setup my server to receive the ./gtimelog/timelog.txt file only by doing a selective sychronization of the gtimelog directory. The URL for the dropbox_temp file in the blog post is no longer valid but you can download it from github[2] . It only needs to be renamed to dropbox_temp.
Merci beaucoup pour votre reportage sur gtimelog. J’ai cherche’ pout la location du base de donne’ for cette outil, et voila`, dans la directoire .local. Enfin! Merci, merci, merci!