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.0.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.0-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pttm-0.2.0.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.0.tar.gz
Algorithm Hash digest
SHA256 04b0067daf06417a8137b0c40be4796073019fb9b4ebd605ea8fc75204eb8afe
MD5 db5b41fc1659972f77f22503dbeb03e0
BLAKE2b-256 b55a7c08ec4e0e264338b9c30361320bc19796cb94e4a9d1e41db1b9efc209db

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pttm-0.2.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dd18c14d3457272b9f41520baa23d408ffd8cdce0c20659ec30c9f85684663d6
MD5 8fe3b29aff41a64b26d0db1061f8e44a
BLAKE2b-256 260ab07fa5efdb31f9520aab77edb72d8cf94431e0e5c42fe53fe89e13785a17

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