gabrielzschmitz/Tomato.C
gabrielzschmitz/Tomato.C has 448 GitHub stars and 24 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 12:19 UTC. Last push 2026-11-05.
A pomodoro TUI written in pure C.
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalTomato.C
Tomato.C is a modular, extensible, terminal-based Pomodoro timer written in pure C. Its features dynamic UI, ASCII sprite animations, desktop notifications, built-in notes system with Vim-like motions and comprehensive session history logging.
Installation
Choose the installation method that best fits your needs. Homebrew is recommended for macOS, the install script is the quickest option for Linux and macOS, and building from source is ideal if you want to customize or contribute to the project.
Quick install script
curl -sSL https://raw.githubusercontent.com/gabrielzschmitz/Tomato.C/main/install.sh | bash
Build from source
git clone https://github.com/gabrielzschmitz/Tomato.C.git
cd Tomato.C
./build.sh
# And/or
./install.sh
By default the build uses gcc. To use tcc (Tiny C Compiler) or zig as an alternative, pass it on the command line:
CC=tcc ./build.sh
# And/or
CC=tcc ./install.sh
CC="zig cc" ./build.sh
# And/or
CC="zig cc" ./install.sh
Alternatively for a more permanent change, edit CC = gcc in build/config.mk.
Uninstall
From local repo:
sudo ./install.sh --uninstall
Via curl:
curl -sSL https://raw.githubusercontent.com/gabrielzschmitz/Tomato.C/main/install.sh | bash -s -- --uninstall
Usage
Pomodoro controls and navigation are handled via keyboard shortcuts and mouse
input. To get help with the keybinds press ?/F1 at anytime!
Tomato.C combines modern productivity features with a clean, retro-inspired terminal interface.
Configuration
Tomato.C uses a toml configuration file. When installed via install.sh, a
fully commented sample config is automatically created at
~/.config/tomato/config.toml.
All available options are documented directly in the file, including timer durations, status bar modules, notifications, animations, keybindings, and other general settings.
Documentation
Complete API and developer documentation is generated with Doxygen.
Doxygen-generated API documentation for Tomato.C.
Generate the documentation locally:
cd docs
./generate.sh
$BROWSER output/html/index.html
Contribute
Feel free to contribute to the project, the requirements are to follow
Conventional Commits, follow
DOXYGEN style of documenting code and use
.clang-format to format the files.
Development
A Nix package, flake, and development shell are included for reproducible builds and tooling.
Build and run the packaged binary:
nix build .# # builds into result/bin/tomato
nix run .# # runs the binary
nix flake check # builds and smoke-tests the package
Enter a development shell (flake or classic nix-shell):
nix develop # flake-based shell
nix-shell # classic (non-flake) shell
The shell provides gcc, make, pkg-config, ncurses, libnotify, plus
clang-format, bear, doxygen, tcc, zig, and valgrind. From inside
it, build and test as usual:
./build.sh
./run_tests.sh
License
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,398 starspublic-apis/public-apis
A collective list of free APIs
497,679 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
447,495 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,261 stars