Files in the top-level directory from the latest check-in of branch trunk
- config
- projects
- README
- timelog.py
This is a second release of timelog, a (very) simple time tracking
tool. Or widget. Or whatever.
I couldn't find a simple tool that would handle generating logs for
multiple clients, some of which had multiple projects. There were
complex tools that would do this, like Quickbooks, but those seemed to
be overkill, especially when it came to price. Not that they charged
to much for what they did, but that they cost to much for what I
wanted them to do.
So I put this together over the weekend. It meets my needs, but I'm a
long-time shell user, so if you want everything GUI, you'll be
disappointed. On the other hand, it's simple enough that creating
another few GUIs shouldn't be hard if I'm encouraged to do so (or
better yet, given code that does it!).
Prerequisites:
This works with Python 2.3 and tools that are normally bundled with
it. So it should run as is on any modern Unix - OSX having been tested
- or Linux system. If you've got a system that doesn't bundle Python,
you'll have to get a distribution. The following instructions are for
Unix and Linux systems, while it should work on Windows, I don't know
off the top of my head how to do so, and it's not worth figuring out
for what's essentially an alpha release.
Installation:
Create a directory in your home directory called '.timelog'. Copy the
contents of this tarball into it, so you have config, projects, README
and timelog.py in it. Copy timelog.py to something on your PATH as
"timelog". If this really confuses you, always run it out of the
.timelog directory by doing "cd ~/.timelog; ./timelog.py" to run it.
Set up your projects. Those are in the file ~/.timelog/projects. Each
line is one project. These are "bottom-level" projects. Projects can
have subprojects, represented by the words on the line. So the line
"MyClient BigProject Documentation" will generate three lines of
output if you log time on it: one for MyClient, one for MyClient
BigProject, and one for MyClient BigProject Documentation. The example
config file provided includes two top-level projects, Client1 and
Client2, with Client2 having two subprojects you want to track
separately, Project1 and Project2. It also includes the project "Mine"
so you can track time on your own.
Now tweak your config. In the Logger section, logfile, activefile and
projectfile name files in .timelog, and should be left alone. "off
clock color" is just that - the color the GUI timer will have when
you're off the clock. weekstart in the Report section is the first day
of the week for reporting purposes. The example sets it to Saturday,
which is what you'd use if you billed on Fridays for work done the
past week.
Finally, we have tasks. Tasks activities that will be timed that
describe what you're doing rather that what you're working on. In the
GUI, they'll each generate what looks like an activity to time *on
every project*. A lot of tasks will make your projects selection list
large. If you make this empty or leave it off, you'll only get the
projects in your projects file.
Use:
Start it in the background with no arguments: "timelog &". This will
open a GUI with a QUIT button, an hours/minutes/seconds clock, an "Off
clock button", and a pulldown list. The list is also set to "Off
clock". Making a selection in the pulldown list will restart the timer
on that activity. Selecting "Off clock" or clicking the "Off clock"
button will end stop timing whatever activity you are doing.
You can get a variety of reports by running timelog with the right
arguments. Run "timelog help" for details on that. Each report
includes only projects for which you've logged time. A project with
subprojects will include a total line for that project as well as each
subproject. If you have tasks, you'll get a separate report of time
spent on each task across all projects as well. Finally, you get a
total logged for the period being reported.
If you're reporting on today/this week/this month/total, time logged
on the current activity will be included in the report. If timelog
exited without being allowed to clean up and you haven't restarted it,
the report will consider you as having been on the last activity ever
since. Once you restart the GUI, it'll clock you out of the last
activity as of the time of the crash, so running a report, restarting
the GUI, and then running it can surprise you.
Comments, suggestions, etc. to mwm@mired.org.