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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2db68c6d318f832eb6a065eab294ca855912e95bae9b3c71a8543ee633c19f51
|
|
| MD5 |
0f355655b69a8ae25e19d1e5137f1235
|
|
| BLAKE2b-256 |
3248ea8d8cc9ae91c5c9a8c7bcf939a509de674607347b7be4f7fb6d11d65145
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf3e202662a8462a72274912b4dd36dbf871023af661100e1ed6c1ddf961d8e2
|
|
| MD5 |
5ca52a9c7e89cd59ef386e9049a90f19
|
|
| BLAKE2b-256 |
97ada2cf0470de6bb7a1e36d9b5bc06edd667b37e26373e2a14c9c0fefb16179
|