A command line time tracking application. Docs at https://tiempo.categulario.xyz
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Categulario 08ff8254d1
derive some defaults to make clippy happy
2 weeks ago
assets add files for the logo 1 year ago
completions add completions to debian, binary and arch packages 5 months ago
docs changelog and docs for 1.6 4 months ago
scripts condense podman command lines in scripts 4 months ago
src derive some defaults to make clippy happy 2 weeks ago
.gitignore a container image capable of building tiempo consistently 4 months ago
.gitlab-ci.yml another two paths were incorrect 4 months ago
CHANGELOG.md fix changelog 4 months ago
Cargo.lock upgrade clap to v3 1 month ago
Cargo.toml separate cli definition into its own file 2 weeks ago
Containerfile a container image capable of building tiempo consistently 4 months ago
LICENSE the complete CI infra 1 year ago
README.md change wording in readme 2 months ago



A timetrap compatible command line time tracking application. Read the fine manual.


For Archlinux (and derivatives) users

There are both binary and source packages in the AUR:

For all other linux users

Go to gitlab releases page and grab the latest binary for your linux. There is a .deb file for Debian and Ubuntu as well as a binary for any x86_64 Linux.

In the case of the tar archive you just need to run the included install.sh script.

For Rust developers

You have cargo! you can run:

cargo install tiempo

However that will not install the beautiful man page. Although you can still see it at https://tiempo.categulario.xyz .

For everyone else

You need to compile tiempo by yourself. But don't worry! It is not that hard. Just clone the repository, make sure you have rust installed and run:

cargo build --release

inside the repository. The binary will be named t (or t.exe if you use windows) and it is located inside the target/release directory that was created during compilation.

How to build

You need rust, then clone the repo and simply run

cargo test

to check that everything is working, and then

cargo build --release

to have a binary at target/release/t that you can then move to a directory in your PATH or use it by its absoulte or relative paths.


t --help

to see the options.

Development database

When developing I prefer not to mess with my own database, so I use this .env file:

export TIMETRAP_CONFIG_FILE=/absolute/path/to/repo/dev_config.toml
PS1="$ "

and when I want to test some commands against such config file I just source it:

source .env
cargo run -- in 'hola'


The docs are written using sphinx. To install the required dependencies enter the docs directory and create a virual environment:

virtualenv .venv

then activate it and install the dependencies:

source .venv/bin/activate
pip install -r requirements.txt

To build the docs just do:

make html

for the html version (output located at docs/build/html), or

make man

for the man page (output located at docs/build/man/tiempo.1). To test the man page you can do:

man -l build/man/tiempo.1

To get a live-reloaded server with the html docs do:

sphinx-autobuild source/ build/html/

The contents of the man page are located in docs/source/index.rst, formatted as reStructuredText.

Building the packages like in CI but locally

First pull the image:

podman pull tiempo-build-env

Or build it yourself from this repo:

podman build -t tiempo-build-env .

Then build the artifacts:


To build the archlinux PKGBUILDs (depends on the artifacts folder created by the previous command):


Both of the previous commands produce PKGBUILDs in the current directory so if you run both sequentially you'll lose the PKGBUILD of the first command.

Special Thanks

To timetrap for existing, to samg for creating it. It is the tool I was looking for and whose design I took as reference, keeping compatibility when possible.

What I'm working on

(more or less ordered by priority)

  • fix the pipeline because it's broken. The last release and its artifacts are wrong.
  • add an install/uninstall script to the any-linux package.
  • finish the summary formatter.
  • match formatters by prefix (so there's no need to type all of its name if the prefix is unambiguous).
  • let resume --interactive receive a string as the text for a new entry.
  • add a command that opens the doc in the browser just like fish
  • compile a package for windows in CI

Release checklist

(mostly to remind myself)

  • Ensure tests pass and that clippy doesn't complain
  • Add documentation about the new features
  • Create an entry in CHANGELOG.md with the target version, commit it
  • run vbump
  • git push && git push --tags && cargo publish
  • wait for release and then test the releases (aur bin and git and packaged).