Skip to main content

Pomodoro Terminal Timer & Manager

Project description

PTTM - Pomodoro Timer & Task Manager

PTTM is a terminal-based Pomodoro app built with Textual. It provides a timer, task tracking, and configurable work/break settings in a compact TUI.

Features

  • Pomodoro timer with focus, short break, and long break modes
  • Audible ding sound on every mode transition (synthesised at first launch, cached as ding.wav)
  • Task list with per-task Pomodoro counts
  • Persistent configuration stored as JSON
  • Keyboard shortcuts for all timer and task actions
  • In-app settings tab for adjusting timing values
  • Auto-start next session — optionally begin the next timer automatically when the current one ends
  • Full keyboard navigation in the Tasks and Settings tabs (arrow keys, Escape)

Requirements

  • Python 3.10 or newer
  • aplay (ALSA/PipeWire) for audio — pre-installed on most Linux desktops

Installation

You can install the application globally from PyPI using pipx:

pipx install pttm

To install it locally for development, clone the repository and install it in editable mode:

git clone https://github.com/Shru-10p/pttm.git
cd pttm
pipx install -e .

Run

Start the app with:

pttm

Keyboard Shortcuts

Global

Key Action
q Quit
Space / s Start or pause the timer
r Reset the current timer
Ctrl+R Reset the full session
k Skip to the next timer mode
f Switch to Focus mode
g Switch to Short Break mode
b Switch to Long Break mode
t Focus the new task input
Ctrl+P Show / hide the shortcuts overlay
Esc Focus the tab bar (from Tasks or Settings tab)

Tasks tab

Key Action
Move focus to the next task (from input, enters the list)
Move focus to the previous task (from first task, returns to input)
Esc Return focus to the task input box
Space / Enter Toggle task completion
f Set task as the active Pomodoro target
e Rename task inline
d Delete task (returns focus to input)

Settings tab

Key Action
Move focus to the next field
Move focus to the previous field
Enter Activate the focused button / toggle switch

Configuration

The app reads and writes a JSON config file. By default, the file is stored in your user config directory. You can override the location by setting PTTM_CONFIG_PATH before launch.

export PTTM_CONFIG_PATH=./pttm_config.json
pttm

Settings

Setting Default Description
Focus session 25 min Length of each focus block
Short break 5 min Length of a short break
Long break 15 min Length of a long break
Sessions before long break 4 How many focus sessions before a long break
Auto-start next session Off Automatically begin the next timer when the current one ends

The config also persists the completed focus session count and all task data across launches.

Audio

On first launch, PTTM synthesises a short bell-tone (ding.wav) using only Python's standard library and stores it next to the config file. From then on the cached file is reused directly — no re-synthesis, no network access, and no extra Python dependencies.

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

pttm-0.2.1.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

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

pttm-0.2.1-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file pttm-0.2.1.tar.gz.

File metadata

  • Download URL: pttm-0.2.1.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pttm-0.2.1.tar.gz
Algorithm Hash digest
SHA256 2db68c6d318f832eb6a065eab294ca855912e95bae9b3c71a8543ee633c19f51
MD5 0f355655b69a8ae25e19d1e5137f1235
BLAKE2b-256 3248ea8d8cc9ae91c5c9a8c7bcf939a509de674607347b7be4f7fb6d11d65145

See more details on using hashes here.

File details

Details for the file pttm-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: pttm-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pttm-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bf3e202662a8462a72274912b4dd36dbf871023af661100e1ed6c1ddf961d8e2
MD5 5ca52a9c7e89cd59ef386e9049a90f19
BLAKE2b-256 97ada2cf0470de6bb7a1e36d9b5bc06edd667b37e26373e2a14c9c0fefb16179

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