A simple Pomodoro timer desktop app built with Python and Tkinter.
- Work, short break, and long break timers
- Configurable session durations
- Configurable number of work cycles before long break
- Start, pause, and reset controls
- Completed session counter
- Python 3.10+
- uv
Tkinter is included with most standard Python distributions. However, on some Linux systems it must be installed separately via the system package manager — it cannot be installed through pip, uv, or Poetry.
Debian/Ubuntu:
sudo apt-get install python3-tkFedora/RHEL:
sudo dnf install python3-tkinterFrom the project root:
uv run main.pyThis app is a desktop GUI, so Docker needs access to your host display (X11) and optional audio device.
Build image:
docker build -t pomowatch:latest .Explanation:
docker buildcreates a Docker image from the Dockerfile in the current directory.-t pomowatch:latesttags the image with the namepomowatchand taglatest..sets the build context to the current folder (project root).
Run image on Linux with X11 and sound:
xhost +local:docker
docker run --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--device /dev/snd \
pomowatch:latest
xhost -local:dockerExplanation:
xhost +local:dockertemporarily allows local Docker containers to access your X server so the Tkinter window can open.docker run --rmstarts the container and removes it automatically when the app exits.-e DISPLAY=$DISPLAYpasses your current X display environment into the container.-v /tmp/.X11-unix:/tmp/.X11-unixmounts the X11 Unix socket so GUI drawing works.--device /dev/sndpasses the host audio device to the container so chimes can play.pomowatch:latestis the image tag to run.xhost -local:dockerrevokes the X server permission granted earlier.
Optional run without audio:
xhost +local:docker
docker run --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
pomowatch:latest
xhost -local:dockerFiles used:
Dockerfile.dockerignore
From the release page, download:
pomowatch_0.1.0-1_all.deb
or use wget:
wget https://github.com/S-Dawn/PomoWatch/releases/download/v0.1.0-1/pomowatch_0.1.0-1_all.debFrom the folder containing the file:
sudo apt install ./pomowatch_0.1.0-1_all.debpomowatchIf you want to create a new .deb package from source, follow the guide in BUILD_DEB.md.
This project includes ready-made tasks in .vscode/tasks.json.
Open Command Palette and run Tasks: Run Task, then use:
Package: Full .deb workflowto install build dependencies, build the package, move.debtodist/, and clean generated artifacts.Install: local .deb from distto install the generated package locally with apt.
You can also run individual steps with:
Package: Install build dependenciesPackage: Build .debPackage: Move .deb to distPackage: Clean generated artifacts
.
├── .dockerignore
├── BUILD_DEB.md
├── Dockerfile
├── dist/
├── debian/
├── packaging/
├── main.py
├── pyproject.toml
└── README.md