Skip to main content

Terminal-based Pomodoro timer with TUI and sound notifications

Project description

pomo-tui

A terminal-based Pomodoro timer with a real-time ASCII digital clock. Designed for developers who want to stay focused without leaving the terminal.


✨ Features

  • Real-time ASCII digital clock display
  • Pomodoro workflow with WORK / BREAK cycles
  • tmux-friendly terminal behavior
    • stable key polling
    • resize-aware redraw
    • compact help text for small panes
  • Color-coded phases
    • 🔴 WORK
    • 🔵 BREAK
    • 🟡 PAUSED
  • Keyboard control
    • p: pause / resume
    • N: skip to next phase
    • R: reset the whole session
    • Ctrl + C: quit
  • Terminal bell notification on phase change
  • Safe fallback rendering on small terminal windows
  • Fully terminal-based with no GUI dependency

🚀 Installation

pip

pip install pomo-tui

pipx

pipx install pomo-tui

🎯 Usage

Start with the default Pomodoro flow:

pomo

Run a custom session:

pomo --work 25 --break 5 --cycles 4

Run continuously until interrupted:

pomo --cycles 0
Option Description Default
--work Work duration in minutes 25
--break Break duration in minutes 5
--cycles Number of work/break cycles, 0 = infinite 0

Keyboard controls

Key Action
p Pause / Resume
N Move immediately to next phase
R Reset the whole session
Ctrl + C Quit

Notes

  • --work and --break must be positive integers
  • --cycles must be a non-negative integer
  • Very small terminals automatically fall back to compact text rendering
  • In tmux, use the keys directly in the running app pane
  • The status area shows the current cycle and adapts to pane resizing

🛠️ Development Setup

git clone https://github.com/newbie1223/pomodoro-cli.git
cd pomodoro-cli
python3 -m venv .venv
source .venv/bin/activate
pip install -e .[test]
pytest

If your environment does not support extras installation yet, use:

pip install -e .
pip install pytest
pytest

Project structure

pomodoro_cli/
├── __init__.py
├── __main__.py
├── app.py
├── cli.py
├── config.py
└── models.py
tests/
└── test_app.py
  • app.py: application lifecycle and curses UI flow
  • cli.py: argument parsing and app construction
  • config.py: constants and ASCII digit definitions
  • models.py: enums and session state models

📦 Package Information

  • Package name: pomo-tui
  • CLI command: pomo
  • Version: 1.2.0
  • Python requirement: >=3.9

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pomo_tui-1.2.0.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pomo_tui-1.2.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file pomo_tui-1.2.0.tar.gz.

File metadata

  • Download URL: pomo_tui-1.2.0.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pomo_tui-1.2.0.tar.gz
Algorithm Hash digest
SHA256 db6dd0aa01787cdf2fba05cbb54b86e854e3f173a573c4399df8c217995786f0
MD5 ed60a118c6c22a7d088ad52e3ac158d4
BLAKE2b-256 4b3914eb54b6f5eda6a5087f8d4ea3a42cbf8153d960891791569b3c0d4fcac9

See more details on using hashes here.

File details

Details for the file pomo_tui-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: pomo_tui-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pomo_tui-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e1657f13a2afc4c1806d89ca14ced4df8ea8c216e28b76f6c1c2d4f59e8785bf
MD5 6161a47eeb2372883511d700f1fa8b1a
BLAKE2b-256 e7a7a5e4ba3a6ca03e6bbb8797a7fe8c694aedb5deda6cbea39507843f5edb06

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page