Skip to main content

One dashboard for software & firmware updates across everything you own

Project description

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 kitFrostedDialog, the Selector dropdown, IconButton with crisp HiDPI icons, keyboard-nav helpers, a top bar that doubles as the titlebar.
  • Cross-platform scaffoldingplatform_compat, threaded async_io, the per-platform backend pattern (autostart / notifications / power), a minimal AppBus signal bus, slim persistent Settings, 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. See docs/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=debug to turn it up.
  • Settings migrations — a versioned run-once migration runner (meta/schema_version), so a renamed key never strands an installed user.
  • Credentials storesave_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

  1. 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, call trackerkeeper.configure(org=…, app=…, display_name=…) once, before importing the app — the font-scale loader reads identity at import time.)
  2. 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 edit trackerkeeper/app.py::_placeholder.)
  3. Extend the bus. Add your app's signals by subclassing AppBus (trackerkeeper/bus.py); the base stays minimal.
  4. 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trackerkeeper-0.1.1.tar.gz (655.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trackerkeeper-0.1.1-py3-none-any.whl (346.5 kB view details)

Uploaded Python 3

File details

Details for the file trackerkeeper-0.1.1.tar.gz.

File metadata

  • Download URL: trackerkeeper-0.1.1.tar.gz
  • Upload date:
  • Size: 655.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for trackerkeeper-0.1.1.tar.gz
Algorithm Hash digest
SHA256 72eb0145ed563d1b15f0cb206d6bf3531111e3f21b8be10584ec5a238883215c
MD5 fa1d2405abefee69192025755b1eecad
BLAKE2b-256 eeccb8b104a73034db8d347756fb5aa4891be3b615e0c634035bd360bfdee34d

See more details on using hashes here.

Provenance

The following attestation bundles were made for trackerkeeper-0.1.1.tar.gz:

Publisher: pypi-publish.yml on wolfgangwarehaus/trackerkeeper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file trackerkeeper-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: trackerkeeper-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 346.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for trackerkeeper-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3d1aadf9d921d4042363b59a88ae2bb1f795863b402f1b38ffcbf50cf22e4b4e
MD5 9ffc0889f0093c14fc20fe419d2b10ef
BLAKE2b-256 99667ba43dafd2d377dcfe0d0c5f188deda9520b2107cd65d10d38f143dc2ae1

See more details on using hashes here.

Provenance

The following attestation bundles were made for trackerkeeper-0.1.1-py3-none-any.whl:

Publisher: pypi-publish.yml on wolfgangwarehaus/trackerkeeper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page