A portable timer-application: simple yet efficient time management tool.
It was hugely inspired by @dziemborowicz's Hourglass app.
Why did I make it:
- to get familiar with Python GUI toolkits (with
tkinter
in particular) to be able to utilize this skills in my other projects - to make a proper substitution for Hourglass
What is Hourglass? Click to (un)fold.
It's a countdown timer desctop GUI application for Windows; written on C#; minimalistic in a Unix-way-ish sence.
It looks like this:
Nothing's wrong with it. It's an amazing app. I've being using it for 3+ years.
Though, in my humble opinion, it maybe needs some slight optimization. Its downsides are:
- unreasonably high memory consumption: 70-180 MB, depending on the size of the window I guess
- inefficient GPU usage: up to 30% load on GeForce RTX 2060
- like why it even needs GPU?
- it is used to produce a fancy window flickering background effect when the timer has rang
- like why it even needs GPU?
- a single-file portable app
- resizable window with adaptive UI
- right button click opens a context menu, where you can:
- change UI theme
- change the ring sound
- the application state is saved between sessions (last valid input, UI theme, the dinging sound picked)
- when the timer expires:
- the short dinging sound is played
- the timer window pops up above all the over windows
- the progress bar is also displayed on a taskbar plate, so it's visible even when the app is minimized
Windows 10 is required.
- Download the executable named
secondglass.exe
, from the latest release - Run the executable
- Type the time duration in a textbox and press the
start
-button (or just Enter). Input examples:10
becomes: 10 minutes123
or123 m
or123min
becomes: 2 hours 3 minutes30s
or30 s
or30 sec
becomes: 30 seconds1h 35m
becomes: 1 hour 35 minutes
- You can pause, restart or abort the timer by pressing
pause
,restart
andstop
buttons respectively
secondglass.timer
— the core-logics of the app (ui-agnostic)secondglass.ui.console
— visualization in command linesecondglass.ui.tkbootstrap
—tkinter
-powered UIsecondglass.progress
— working with Windows toolbar indicator
tkbootstrap
— givestkinter
some attractive appearancecomtypes
— grants access to Windows API (to change window toolbar)pygame
— plays that dinging sound when the timer ringspyinstaller
— packs everything together into a single executable
- Install the dependencies:
- option 1 - if having both
make
andPoetry
:- in the project directory execute
make init
- in the project directory execute
- option 2 - if only having
Poetry
:- in the project directory execute
poetry install
- in the project directory execute
- option 3 - if having none:
- in the project directory create virtual environment and switch to it
- execute
pip install -r requirements.txt
- option 1 - if having both
- Run the app:
- option 1:
make run
- option 2:
poetry run python -m secondglass
- option 3:
python -m secondglass
make run
ormake
— run app with Pythonmake lint
— launching linters and formaters (mypy
,black
,isort
,flake8
)make test
— run unit-testsmake build
— create an executable in abuild
folder
- this application is licensed under MIT License
- the application icons were created by @paomedia and are licensed under CC0 1.0
- the application sounds belong to a variety of authors:
- LloydEvans09's:
- Light wood — under CC 4.0
- Balsa hit 1.wav — under CC0 1.0
- Wood spin — under CC0 1.0
- spray_can_rattle.wav — under CC NC 4.0
- ArtOrDie's:
- michael_grinnell's:
- Metalic_Ching_Keys_2.wav — under CC0 1.0
- LloydEvans09's: