Skip to main content

A cross-platform terminal Pomodoro timer (stdlib-only) with keypress pauses and an ASCII reward banner.

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

Shellpomodoro

shellpomodoro = Shell + Pomodoro timer. Built for my own use; sharing in case it helps others too.

A cross-platform terminal-based Pomodoro timer CLI application that can be installed via pip and run anywhere. Built with Python's standard library only - no external dependencies required.

Features

  • 🍅 Classic Pomodoro technique with customizable work and break durations
  • ⏱️ Real-time countdown display with MM:SS format
  • 🔔 Terminal bell notifications at phase transitions
  • ⌨️ Keypress-controlled phase transitions (no need to wait)
  • 🎨 ASCII art congratulations upon session completion
  • 🖥️ Cross-platform support (Windows, macOS, Linux)
  • 📦 Zero external dependencies (Python stdlib only)
  • 🚀 Fast installation via pip

Installation

Note: PyPI install is coming right after the first release. For now, use a dev install or pipx.

Development Installation (from source)

git clone https://github.com/inspiringsource/shellpomodoro.git
cd shellpomodoro
python3 -m venv .venv
source .venv/bin/activate  # Windows: .\.venv\Scripts\Activate.ps1
pip install -U pip
pip install -e .

Alternative: Using pipx (isolated install)

pipx install .

Usage

Basic Usage

Start a default Pomodoro session (25min work, 5min break, 4 iterations):

shellpomodoro

Customization Options

# Custom work and break durations
shellpomodoro --work 30 --break 10

# Custom number of iterations
shellpomodoro --iterations 6

# Custom notification beeps
shellpomodoro --beeps 3

# Combine all options
shellpomodoro --work 45 --break 15 --iterations 3 --beeps 1

Command Line Options

  • --work N: Set work period duration in minutes (default: 25)
  • --break N: Set break period duration in minutes (default: 5)
  • --iterations N: Set number of Pomodoro cycles (default: 4)
  • --beeps N: Set number of notification beeps (default: 2)
  • --help: Show help message and exit

How It Works

  1. Work Phase: Focus on your task while the timer counts down
  2. Notification: Terminal bell sounds when work phase ends
  3. Keypress Transition: Press any key when ready for break
  4. Break Phase: Take a break while the timer counts down
  5. Repeat: Continue until all iterations are complete
  6. Completion: Enjoy ASCII art congratulations!

Session Control

  • Abort Session: Press Ctrl+C at any time to abort the current session
  • Phase Transitions: Press any key to advance from work to break or break to work
  • Real-time Display: See countdown timer, current phase, and instructions

Requirements

  • Python 3.9 or higher
  • No external dependencies required

Cross-Platform Compatibility

Shellpomodoro works seamlessly across different operating systems:

  • Windows: Uses msvcrt for keypress detection
  • Unix/Linux/macOS: Uses termios and tty for terminal control
  • Terminal Bell: Uses standard \a character (may require terminal configuration)

Examples

Quick 15-minute session

shellpomodoro --work 15 --break 5 --iterations 1

Extended deep work session

shellpomodoro --work 50 --break 10 --iterations 3

Silent mode (no beeps)

shellpomodoro --beeps 0

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

If you encounter any issues or have questions, please open an issue on the GitHub repository.

Optimization

This code has been optimized using Grok code.

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

shellpomodoro-0.1.0.tar.gz (30.1 kB view details)

Uploaded Source

Built Distribution

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

shellpomodoro-0.1.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file shellpomodoro-0.1.0.tar.gz.

File metadata

  • Download URL: shellpomodoro-0.1.0.tar.gz
  • Upload date:
  • Size: 30.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for shellpomodoro-0.1.0.tar.gz
Algorithm Hash digest
SHA256 47f894b91d57c8f59ec6f1f1ec49442422687b5272070485a0502033465d22b7
MD5 ff43ddc0106071ad5c94ded485b7b990
BLAKE2b-256 6538812ada1c45be970f08b97da784048a38488873d52b30ef1808d84f53ece4

See more details on using hashes here.

Provenance

The following attestation bundles were made for shellpomodoro-0.1.0.tar.gz:

Publisher: publish.yml on inspiringsource/shellpomodoro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shellpomodoro-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: shellpomodoro-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for shellpomodoro-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9cb244292f688ccdef6608eb27d073757a11ba349ebb807b1de053486a204857
MD5 047c651f8c2f39ded3097fc9f4f8bba9
BLAKE2b-256 9a01f1afd27804fcf23af218d369ae961537bd222bb9c79fe9d624367ebdd4ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for shellpomodoro-0.1.0-py3-none-any.whl:

Publisher: publish.yml on inspiringsource/shellpomodoro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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