Skip to content

pimalaya/comodoro

Repository files navigation

⏱️ Comodoro GitHub release Matrix

CLI to manage timers, based on time-lib

Features

  • Centralized server timer controllable by multiple clients at the same time
  • Multi protocols (only TCP for now, but you can build your own)
  • 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, and relies on cargo features to enable or disable functionalities. Default features can be found in the features section of the Cargo.toml.

Installation

The v1.0.0 is currently being tested on the master branch, and is the prefered version to use. Previous versions (including GitHub beta releases and repositories published versions) are not recommended.

Pre-built binary

Comodoro CLI v1.0.0 can be installed with a pre-built binary. Find the latest pre-releases GitHub workflow and look for the Artifacts section. You should find a pre-built binary matching your OS.

Cargo (git)

Comodoro CLI v1.0.0 can also be installed with cargo:

$ cargo install --frozen --force --git https://github.com/pimalaya/comodoro.git

Other outdated methods

These installation methods should not be used until the v1.0.0 is finally released, as they are all (temporarily) outdated:

Pre-built binary

Comodoro CLI can be installed with a prebuilt binary:

# 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 section.

Binaries are built with default cargo features. If you want to enable or disable a feature, please use another installation method.

Cargo

Comodoro CLI can be installed with cargo:

$ cargo install comodoro

# With only IMAP support:
$ cargo install comodoro --no-default-features --features imap

You can also use the git repository for a more up-to-date (but less stable) version:

$ cargo install --git https://github.com/pimalaya/comodoro.git comodoro
Nix

Comodoro CLI can be installed with 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 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):

$ 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), so the only way to configure Comodoro CLI is to copy the sample config file then edit it by commenting or uncommenting the options you want.

FAQ

How to debug Comodoro CLI?

The simplest way is to use --debug and --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_SPANTRACE=1: enables the spantrace (a span represent periods of time in which a program was executing in a particular context).
  • RUST_BACKTRACE=1: enables the error backtrace.
  • RUST_BACKTRACE=full: 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:

RUST_LOG=debug comodoro 2>/tmp/comodoro.log

Sponsoring

nlnet

Special thanks to the NLnet foundation and the European Commission that helped the project to receive financial support from various programs:

If you appreciate the project, feel free to donate using one of the following providers:

GitHub Ko-fi Buy Me a Coffee Liberapay thanks.dev PayPal