GTK+ time tracking app

GTimeLog is a small GTK+ app for keeping track of your time. Its main goal is to be as unintrusive as possible.


Here's how it works: every day, when you arrive to work, start up gtimelog and type "arrived". Then start doing some activity (e.g. reading mail, or working on a task). Whenever you stop doing an activity (either when you have finished it, or when you switch to working on something else), type the name of the activity into the gtimelog prompt. Try to use the same text if you make several entries for an activity (history helps here—just use the up and down arrow keys). They key principle here is to name the activity after you've stopped working on it, and not when you've started. Of course you can type the activity name upfront, and just delay pressing the Enter key until you're done.

There are two broad categories of activities: ones that count as work (coding, planning, writing proposals or reports, answering work-related email), and ones that don't (browsing the web for fun, reading personal email, chatting with a friend on the phone for two hours, going out for a lunch break). To indicate which activities are not work related add two asterisks to the activity name:

lunch **
browsing slashdot **
napping on the couch **
If you want some activity (or non-activity) to be completely omitted from the reports, use three asterisks (this works only in GTimeLog 0.2.1 or later):
break ***

GTimeLog displays all the things you've done today, and calculates the total time you spent working, and the total time you spent "slacking". It also advises you how much time you still have to work today to get 8 hours of work done. There are two basic views: one shows all the activities in chronological order, with starting and ending times; while another groups all entries with the same into one activity and just shows the total duration.

At the end of the day you can send off a daily report by choosing Report -> Daily Report. A mail program (Mutt in a terminal, unless you have changed it in ~/.gtimelog/gtimelogrc or ~/.config/gtimelog/gtimelogrc) will be started with all the activities listed in it. My Mutt configuration lets me edit the report before sending it.

If you make a mistake and type in the wrong activity name, or just forget to enter an activity, don't worry. GTimeLog stores the time log in a simple plain text file ~/.gtimelog/timelog.txt (or ~/.local/share/gtimelog/timelog.txt). Every line contains a timestamp and the name of the activity that was finished at the time. All other lines are ignored, so you can add comments if you want to—just make sure no comment begins with a timestamp. You do not have to worry about GTimeLog overwriting your changes—GTimeLog always appends entries at the end of the file, and does not keep the log file open all the time. You do have to worry about overwriting changes made by GTimeLog with your editor—make sure you do not enter any activities in GTimeLog while you have timelog.txt open in a text editor.


There is a gtimelog package in Debian and in Ubuntu. You probably won't get the latest version this way, thought.

The latest release is available from the Python Package Index. You can pip install gtimelog.

You will also need Python 2.7 (or 3.4+) and PyGObject.

GTimeLog should also work on Windows and Mac OS X, but I don't have convenient installers.

Getting Started

When you run GTimeLog the first time, it will create a configuration file (~/.config/gtimelog/gtimelogrc or ~/.gtimelog/gtimelogrc) with the default settings. Edit it to set your name and other settings. You'll need to restart GTimeLog for the changes to take effect. (A more convenient configuration dialog is implemented in Git master, which also switches to GSettings.)


Please report bugs/feature requests on GitHub.


The source lives on GitHub. Get it with

git clone


GTimeLog was written by Marius Gedminas, with contributions from many others. It is released under the terms of the GNU GPL.