Skip to content


Repository files navigation

NAME - a timeclock reporting utility

SYNOPSIS [--html|--csv] [file] [--help|--man|--version]

Some examples:

# Console output
$ timelog.bak

# HTML output
$ --html > report.html

# CSV output
$ --csv > report.csv


If you run without any arguments, it will read a timelog file from one of the default locations (either ~/.emacs.d/timelog or ~/.timelog) and print an ASCII formatted daily report to the console.

If your timelog file is located somewhere else, can be called with the name of a timelog file to read.

Whether you specify a file or not, you can change the default output format by adding on of the following arguments:


Switches to HTML formatted output.


Switches to CSV formatted output. can also print version an usage information. This is done by specifying exactly one argument that should be one of the following:


Print short usages information and exits.


Displays the manual and exits.


Displays the version number and copyright information and exits.


This is a simple reporting utility for timeclock, which is a time tracking package for GNU Emacs.

You will use timeclock from GNU Emacs to check in and check out of projects during your workday.

Then at the end of the week you can run to get a daily report of your work time.


If you haven't changed your Emacs/TimeClock setup, no configuration is needed. The script will read your timelog file from the default location which is either ~/.emacs.d/timlog or ~/.timelog depending on your Emacs version.

If you have changed the location of the timelog file (I've placed mine in a MEGA folder), you can create the file ~/.timeclockrc and define the location of the timelog file there. Example:

$timelog = "$ENV{HOME}/MEGA/timelog";

Emacs Integration

You can add the following to you .emacs file to integrate into Emacs:

(defun timeclock-show-daily-report()
  "Creates and displays a daily report of tim<eclock entries."
  (let ((process-connection-type nil)   ; Use a pipe.
        (command-name "timeclock")
        (buffer-name "*timeclock daily report*")
        (script-name ""))
    (when (get-buffer buffer-name)
        (set-buffer buffer-name)
        (set-buffer-modified-p nil)
    (set-buffer (get-buffer-create buffer-name))
    (start-process command-name buffer-name "perl" "-S" script-name)
    (switch-to-buffer buffer-name)))

And then use M-x timeclock-show-daily-report RET to display the report.


Søren Lund,


App::TimeClock::ConsolePrinter, App::TimeClock::HtmlPrinter, App::TimeClock::CsvPrinter, App::TimeClock::PrinterInterface,


Please report any bugs at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


Copyright (C) 2012-2018 Søren Lund

This file is part of App::TimeClock.

App::TimeClock is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

App::TimeClock is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with App::TimeClock. If not, see <>.