work

work is a stupid simple time tracker.
A typical work-day might look like,
$ work task "First task of the day"
$ work task "Second task of the day" --chore
$ work list
08:29 - 10:20 Chore Second task of the day 2h 51min
08:19 - 08:29 Work First task of the day 0h 10min
$ work status
Current task: "Second task of the day"
Type: Chore
Duration: 2h 51min
$ work stop
$ work report
2024-12-01 3h 01min (Total)
2h 51min (Chore)
0h 10min (Work)
Week Total: 3h 01min
Usage
To begin a task,
work task "Starting my first task"
Tasks have 1 of 4 possible classifications:
The default is Work and the others are enabled by their respective flag.
For example, to create a Break task,
work task --break "Going for lunch"
The previous task will end when a new task begins.
Similarly, a task can be stopped explicitly with,
work stop
work status, work list, and work report are available to analyze current and previous tasks.
Shutdown and Notification services
Optionally, install systemd user services which notify you when you're not tracking any tasks and stop any running tasks on system shutdown.
To install and enable the services,
work install
They can be disabled with,
work uninstall
Autocomplete
work provides autocomplete for bash, fish, powershell and zsh shells.
For example, to enable autocomplete for the bash shell,
work completion bash | sudo tee /etc/bash_completion.d/work > /dev/null
Note: this does require the bash-completion package is installed.
For more information, see work completion <shell> --help for your respective <shell>.
Install
pip:
work is available as a pypi package.
pip install gwork
go:
go install github.com/jmelahman/work@latest
github:
Prebuilt packages are available from Github Releases.