I wrote this because I couldn't find a simple, CLI-based time tracker that also supported marking work as 'billed' or not, which was important to me for the projects I was working on - so I hacked together tim in a weekend.
I eventually figured that someone else might find this useful, so now it's on GitHub! Feel free to make issues or (better still) PRs :)
More documentation to come... just as soon as I write it.
Usage:
$ tim [OPTIONS] COMMAND [ARGS]...Options:
--conf TEXT: config file location [default: /home/conor/.config/tim/config.toml]-v, --verbose: verbose mode - shows more internal details. useful for debugging--install-completion: Install completion for the current shell.--show-completion: Show completion for the current shell, to copy it or customize the installation.--help: Show this message and exit.
Commands:
start: start tracking time with tagscontinue: continue tracking, repeating the last tagsstop: stop trackingstatus: see the status of your trackinglog: see your work historydelete: delete recorded workbill: mark work as billed (or not)amend: amend tracked work
start tracking time with tags
returns an error if tracking is already running, unless '--replace' is passed. if config option 'allow_no_tags' is false (default true), tags must be provided.
Usage:
$ tim start [OPTIONS] [TAGS]...Arguments:
[TAGS]...: the tags for this time [default: (no tags)]
Options:
-r, --replace: don't error when already tracking - stops the old tracking and starts the new one automatically.--help: Show this message and exit.
continue tracking, repeating the last tags
returns an error if tracking is already running, unless '--replace' is passed. if config option 'allow_no_tags' is false (default true), and last tracking was empty, returns an error.
Usage:
$ tim continue [OPTIONS]Options:
-r, --replace: don't error when already tracking - stops the old tracking and starts the new one automatically.--help: Show this message and exit.
stop tracking
returns an error if no tracking is running.
Usage:
$ tim stop [OPTIONS]Options:
--help: Show this message and exit.
see the status of your tracking
Usage:
$ tim status [OPTIONS]Options:
--help: Show this message and exit.
see your work history
Usage:
$ tim log [OPTIONS] [FILTER]...Arguments:
[FILTER]...: tags to filter for [default: (show all)]
Options:
-p, --partial: don't require whole tag matches for filtering (wildcard mode)-r, --range [today|week|month|year|all]: the range to view [default: week]-B, --billed / -b, --unbilled: show billed or unbilled only [default: (all)]-d, --decimal: show durations in decimal hours instead of hours, minutes, seconds-l, --long: show every detail about tracked work-a, --rate FLOAT: your working rate. if provided, an amount will be shown in the summary--help: Show this message and exit.
delete recorded work
no confirmation is given, so be careful!
Usage:
$ tim delete [OPTIONS] IDArguments:
ID: the id of the work to delete. use 0 for the most recent complete log [required]
Options:
--help: Show this message and exit.
mark work as billed (or not)
supply one or both of '--from' and '--to' (or '--all'), and optionally tags to filter for. you can also provide a bill reference, like an invoice number, with '--ref'.
Usage:
$ tim bill [OPTIONS] [FILTER]...Arguments:
[FILTER]...: tags to filter for [default: (show all)]
Options:
-p, --partial: don't require whole tag matches for filtering (wildcard mode)-f, --from [%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%dT%H:%M]: start of range to bill [default: (beginning of time)]-t, --to [%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%dT%H:%M]: end of range to bill [default: (end of time)]-a, --all: mark all matching work as billed (instead of providing from, to, or tags). dangerous!-r, --ref TEXT: bill reference, like an invoice number [default: (no ref)]--unbill: mark as not billed instead of billed. dangerous!--help: Show this message and exit.
amend tracked work
change start or stop times, or modify tags for a work period. use 0 for last complete work. if amend tracking is enabled in your config (off by default), amended work will be flagged in the log.
Usage:
$ tim amend [OPTIONS] RAW_ID ATTRIBUTE:{start|end|tags}Arguments:
RAW_ID: the id of the work to amend. use 0 for the most recent complete log [required]ATTRIBUTE:{start|end|tags}: what to amend [required]
Options:
-t, --time [%Y-%m-%dT%H:%M:%S|%Y-%m-%dT%H:%M]: new timestamp to apply-a, --tags TEXT: new tags to apply--modify-billed: allow modifying times on billed items (disallowed by default)--help: Show this message and exit.