# ⏱ Comodoro [](https://github.com/pimalaya/comodoro/releases/latest) []("https://repology.org/project/comodoro/versions) [](https://matrix.to/#/#pimalaya:matrix.org) [](https://fosstodon.org/@pimalaya)
CLI to manage timers
## Table of contents
- [Features](#features)
- [Installation](#installation)
- [Pre-built binary](#pre-built-binary)
- [Cargo](#cargo)
- [Nix](#nix)
- [Sources](#sources)
- [Configuration](#configuration)
- [FAQ](#faq)
- [Social](#social)
- [Sponsoring](#sponsoring)
## Features
- Centralized server timer controllable by multiple clients at the same time
- **Multi protocols** (*Unix sockets* and *TCP* only supported for now)
- Cycles customizable via config file (**Pomodoro** style, **52/17** style, custom)
- Server and timer hooks customizable via config file (send system notification or run shell command)
*Comodoro CLI is written in [Rust](https://www.rust-lang.org/), and relies on [cargo features](https://doc.rust-lang.org/cargo/reference/features.html) to enable or disable functionalities. Default features can be found in the `features` section of the [`Cargo.toml`](./Cargo.toml#L18), or on [docs.rs](https://docs.rs/crate/comodoro/latest/features).*
## Installation
### Pre-built binary
Comodoro CLI can be installed with the `install.sh` installer:
*As root:*
```
curl -sSL https://raw.githubusercontent.com/pimalaya/comodoro/master/install.sh | sudo sh
```
*As a regular user:*
```
curl -sSL https://raw.githubusercontent.com/pimalaya/comodoro/master/install.sh | PREFIX=~/.local sh
```
These commands install the latest binary from the GitHub [releases](https://github.com/pimalaya/comodoro/releases) section.
If you want a more up-to-date version than the latest release, check out the [releases](https://github.com/pimalaya/comodoro/actions/workflows/releases.yml) GitHub workflow and look for the *Artifacts* section. You will find a pre-built binary matching your OS. These pre-built binaries are built from the `master` branch.
*Such binaries are built with the default cargo features. If you need more features, please use another installation method.*
### Cargo
Comodoro CLI can be installed with [cargo](https://doc.rust-lang.org/cargo/):
```
cargo install comodoro --locked
```
With only server support:
```
cargo install comodoro --locked --no-default-features --features server
```
You can also use the git repository for a more up-to-date (but less stable) version:
```
cargo install --locked --git https://github.com/pimalaya/comodoro.git
```
### Nix
Comodoro CLI can be installed with [Nix](https://serokell.io/blog/what-is-nix):
```
nix-env -i comodoro
```
You can also use the git repository for a more up-to-date (but less stable) version:
```
nix-env -if https://github.com/pimalaya/comodoro/archive/master.tar.gz
```
*Or, from within the source tree checkout:*
```
nix-env -if .
```
If you have the [Flakes](https://nixos.wiki/wiki/Flakes) feature enabled:
```
nix profile install comodoro
```
*Or, from within the source tree checkout:*
```
nix profile install
```
*You can also run Comodoro directly without installing it:*
```
nix run comodoro
```
### Sources
Comodoro CLI can be installed from sources.
First you need to install the Rust development environment (see the [rust installation documentation](https://doc.rust-lang.org/cargo/getting-started/installation.html)):
```
curl https://sh.rustup.rs -sSf | sh
```
Then, you need to clone the repository and install dependencies:
```
git clone https://github.com/pimalaya/comodoro.git
cd comodoro
cargo check
```
Now, you can build Comodoro:
```
cargo build --release
```
*Binaries are available under the `target/release` folder.*
## Configuration
The wizard is not yet available (it should come soon), meanwhile you can manually edit your own configuration from scratch:
- Copy the content of the documented [`./config.sample.toml`](./config.sample.toml)
- Paste it into a new file `~/.config/comodoro/config.toml`
- Edit, then comment or uncomment the options you want
## FAQ
### How to debug Comodoro CLI?
The simplest way is to use `--debug` and/or `--trace` arguments.
The advanced way is based on environment variables:
- `RUST_LOG=<level>`: determines the log level filter, can be one of `off`, `error`, `warn`, `info`, `debug` and `trace`.
- `RUST_BACKTRACE=1`: enables the full error backtrace, which include source lines where the error originated from.
Logs are written to the `stderr`, which means that you can redirect them easily to a file:
```
comodoro server start --debug 2>/tmp/comodoro.log
```
## Social
- Chat on [Matrix](https://matrix.to/#/#pimalaya:matrix.org)
- News on [Mastodon](https://fosstodon.org/@pimalaya) or [RSS](https://fosstodon.org/@pimalaya.rss)
- Mail at [pimalaya.org@posteo.net](mailto:pimalaya.org@posteo.net)
## Sponsoring
[](https://nlnet.nl/)
Special thanks to the [NLnet foundation](https://nlnet.nl/) and the [European Commission](https://www.ngi.eu/) that have been financially supporting the project for years:
- 2022: [NGI Assure](https://nlnet.nl/project/Himalaya/)
- 2023: [NGI Zero Entrust](https://nlnet.nl/project/Pimalaya/)
- 2024: [NGI Zero Core](https://nlnet.nl/project/Pimalaya-PIM/) *(still ongoing in 2026)*
If you appreciate the project, feel free to donate using one of the following providers:
[](https://github.com/sponsors/soywod)
[](https://ko-fi.com/soywod)
[](https://www.buymeacoffee.com/soywod)
[](https://liberapay.com/soywod)
[](https://thanks.dev/soywod)
[](https://www.paypal.com/paypalme/soywod)