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.3.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.3.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.3.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pomo_tui-1.3.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.3.0.tar.gz
Algorithm Hash digest
SHA256 395ad053775ab4763bfd490c01f63156aa8721dd174406f3d3b725b3d98d76c0
MD5 9a59a012f6d3fd10e9040ad6fe1e4c3b
BLAKE2b-256 26c5e1ac8590a403c597bd43906891ed640d2587e8f2c620eeabcd75ab4155e3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pomo_tui-1.3.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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 05c95933b8d287435b056d1f038206ff757660781738dd5b5939811a613edb5f
MD5 6db8dd78ca41afac1659798b9a93ac34
BLAKE2b-256 def4e6375249423944387918a2cde670ea7e75b05ed7035892b753c5c6dbaf72

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