Skip to main content

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 timer — 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 current interval
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.

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.3.0.tar.gz (14.4 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.3.0-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pttm-0.3.0.tar.gz
Algorithm Hash digest
SHA256 061af815ff05fd9d81cedc76997d0f80f2632eafdec11d7ffaaccaec4a12a5db
MD5 545bbdf8cda88e800127e962ff3bf028
BLAKE2b-256 a4ab9cb8dd4b9af393e03e7bf533449f81c4197bef961f824f3f0d7385414e85

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pttm-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 16.3 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ec741329388418524ba296a6aa9ed05baf3bc19fb90a5e345dcd53e7046484b1
MD5 f5ff7b5ba193019c5d5cf24db13b3034
BLAKE2b-256 7deb1e1cbd2908a4aac3c6d4ae73aaa5169e070d5d17d81937865aca07f8811e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page