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.2.tar.gz (649.9 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.2-py3-none-any.whl (371.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: trackerkeeper-0.1.2.tar.gz
  • Upload date:
  • Size: 649.9 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.2.tar.gz
Algorithm Hash digest
SHA256 7dc51e10615039b38f7fd6f6e002f8e77368c19d5fe788e52b4f1c684d230642
MD5 b83625f3e8493cde527f492b739f0ecc
BLAKE2b-256 b9945016ffb229357b725560475c42c0c89bae848acda7a31a30ac970a02a7ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for trackerkeeper-0.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: trackerkeeper-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 371.4 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 82549436621ca70fa3d992811d8feaa8114c66d493d4523e6ae2f0fdcc53a001
MD5 6cf8d7bd48a15c4fad8b32be62858184
BLAKE2b-256 7e2efc7815a7055edea4b57c86e55f4b9b2abbb3916344e7bccd1c31bea0a329

See more details on using hashes here.

Provenance

The following attestation bundles were made for trackerkeeper-0.1.2-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