trackerkeeper
A frosted, cross-platform PySide6 app base — the shared starter every wolfgang warehaus app is baked from.
trackerkeeper is a fork-and-own starter, not a dependency. Clone it, rename it, delete what you don't need, and build. It solves the cross-platform window chrome, the design system, and the platform scaffolding once — so a new app is mostly its own idea plus a thin layer on top.
It boots to a themed, frosted, frameless window with a live Settings dialog —
a blank canvas with the hard parts already done. See
docs/PHILOSOPHY.md for the why.
What you get
AppWindow— a frosted, frameless main window that's borderless on KDE Wayland and Windows (with the native-frame smooth-resize fix), shapes compositor blur to a rounded self-painted body, and falls back to a near-opaque panel where blur isn't available (never see-through).- Design system — a three-family theme (frosted dark/light + solid), accent presets with WCAG-safe glyph contrast, scalable typography tiers, a 4-based spacing/radius scale. Live theme + accent switching, OS-following auto mode.
- Widget kit —
FrostedDialog, theSelectordropdown,IconButtonwith crisp HiDPI icons, keyboard-nav helpers, a top bar that doubles as the titlebar. - Cross-platform scaffolding —
platform_compat, threadedasync_io, the per-platform backend pattern (autostart / notifications / power), a minimalAppBussignal bus, slim persistentSettings, single-instance. - HiDPI done right — PassThrough fractional scaling + device-pixel snapping.
- Languages for free — Qt translation catalogs wired at boot, plural-aware
strings, locale-safe number/date/duration formatting (
trackerkeeper.i18n.fmt), RTL-mirrored chrome. Seedocs/TRANSLATING.md. - Accessible by default — every kit control announces to screen readers
(a test fails the build on unnamed ones), visible keyboard-focus states, a
keyboard path for every mouse path. See
docs/ACCESSIBILITY.md. - Structured logging — an opt-in rotating file log (~1 MB × 3) in the app's
state dir, console noise capped at WARNING,
TRACKERKEEPER_LOG=debugto turn it up. - Settings migrations — a versioned run-once migration runner
(
meta/schema_version), so a renamed key never strands an installed user. - Credentials store —
save_secret/load_secret: OS keyring first, an encrypted per-machine blob (AES-GCM, or DPAPI on Windows) as the fallback — plaintext never touches disk. - Second-launch file forwarding — double-click a document while the app is
open and the running instance raises + receives it (
AppBus.files_received). - Update chip — a quiet daily GitHub release check with a dismissable Download / What's-new pill in the top bar; store/AUR builds stay silent.
- Diagnostics bundle — a "Copy diagnostics" button that snapshots versions, platform, theme/blur state, settings (secrets excluded), and the log tail.
Quick start
git clone https://github.com/wolfgangwarehaus/trackerkeeper.git
cd trackerkeeper
pip install -e .
python -m trackerkeeper # or: trackerkeeper (the console script)
Runs straight from a checkout — the flat layout means no install is strictly
required (python -m trackerkeeper).
Make it yours
- Rename the package + set your identity. Rename the
trackerkeeper/package to your app, then set your identity in one place —trackerkeeper/identity.py(org,app,display_name). It's the single source the QSettings handle, the Qt app/org names, the window title, and the Windows AUMID all read. (Or, for programmatic control, calltrackerkeeper.configure(org=…, app=…, display_name=…)once, before importing the app — the font-scale loader reads identity at import time.) - Boot your content. Call
trackerkeeper.run_app(lambda window: YourWidget(window))— it does the full cross-platform boot (identity, blur, HiDPI, single-instance, persisted theme, window geometry, the settings dialog) and shows your content. (Or, for the quickest start, just edittrackerkeeper/app.py::_placeholder.) - Extend the bus. Add your app's signals by subclassing
AppBus(trackerkeeper/bus.py); the base stays minimal. - Keep it light. Heavy/native deps (a PDF engine, mpv, …) go in
[project.optional-dependencies], never the PySide6-only core.
Layout
trackerkeeper/
app.py # main() + the placeholder you replace
window.py # AppWindow — the frosted cross-platform chrome
top_bar.py # the titlebar / top bar
settings_dialog.py
bus.py # AppBus (signal bus)
settings.py # slim QSettings wrapper
theme.py design_tokens.py color_tokens.py ui_helpers.py # the design system
blur/ win_frameless.py frosted_dialog.py selector.py icon_button.py icons.py
autostart/ notifications/ power/ # per-platform backend pattern
docs/PHILOSOPHY.md
License
GPL-2.0-or-later (matching the warehaus family). It's a starter you own — feel free to relicense your fork.
Metadata
Release files for trackerkeeper 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| trackerkeeper-0.1.2.tar.gz | 649.9 kB | With provenance | Details for trackerkeeper-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| trackerkeeper-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for trackerkeeper-0.1.2-py3-none-any.whl |
Total release size: 1.0 MB
Release files / trackerkeeper-0.1.2.tar.gz
| Download URL | trackerkeeper-0.1.2.tar.gz |
|---|---|
| Size | 649.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7dc51e10615039b38f7fd6f6e002f8e77368c19d5fe788e52b4f1c684d230642
|
|
BLAKE2b-256 checksum How to use checksums |
b9945016ffb229357b725560475c42c0c89bae848acda7a31a30ac970a02a7ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 26, 2026.
Transparency logRelease files / trackerkeeper-0.1.2-py3-none-any.whl
| Download URL | trackerkeeper-0.1.2-py3-none-any.whl |
|---|---|
| Size | 371.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
82549436621ca70fa3d992811d8feaa8114c66d493d4523e6ae2f0fdcc53a001
|
|
BLAKE2b-256 checksum How to use checksums |
7e2efc7815a7055edea4b57c86e55f4b9b2abbb3916344e7bccd1c31bea0a329
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 26, 2026.
Transparency logSecurity for trackerkeeper 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for trackerkeeper-0.1.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 26, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.