nico579-commons
Shared building blocks for four small open-source apps: blink2video, lidar2map, watch2notif and gpxsolar.
Each of them grew its own copy of the same pieces: the system tray icon, the local web server, atomic file writes, the update check. Every fix had to be carried by hand into the other copies, and some were forgotten. This package gathers those pieces in one place, one module each, so that the four apps behave the same and a fix lands everywhere at once.
Modules
nico579_commons.tray: the tray icon, with the very same menu in all four apps: Open, "Update to x.y" only when a newer version is known, Restart, Stop, and "Create a Desktop shortcut". There is no room for app-specific entries on purpose: everything else lives in the page that Open brings up. The menu is rebuilt every five seconds, on the main thread under macOS; Restart, Stop and Update run off the icon's message loop, and the icon waits for them before returning.nico579_commons.raccourci: a desktop shortcut in one call, as a .lnk on Windows, a small .app on macOS and a trusted .desktop file on Linux.nico579_commons.maj: a light check for a newer GitHub release, asked at most once an hour by a background thread, so the tray menu and the page read the answer without waiting for the network.nico579_commons.relance: what "Restart" needs. Under the app's own systemd user service, systemd itself restarts it, since a process spawned from inside the service would be killed along with it; elsewhere, a new detached process, in its own session so that launchd leaves it alone.hors_du_service()does the same for a second process that must outlive the app, such as lidar2map's "New instance": under the service, it starts in a scope of its own (systemd-run --user --scope).nico579_commons.environnement: gives system programs (systemctl, xdg-open, the browser) theLD_LIBRARY_PATHthey had before the PyInstaller bootloader prefixed it with the app's own libraries.
The inventory of what is shared, and where the work stands, lives in INVENTAIRE.md (in French).
Install
pip install nico579-commons # relance, raccourci, maj, environnement
pip install "nico579-commons[tray]" # plus pystray and Pillow, for the icon
The package on its own requires nothing: only tray needs pystray and Pillow
(the tray extra), and tray.disponible() says whether they, and a
notification area, are there. An app that lists them itself does not need the
extra.
Use
from nico579_commons import tray
actions = tray.Actions(ouvrir=open_page, redemarrer=restart, arreter=stop,
version_disponible=cached_newer_version,
mettre_a_jour=start_update,
creer_raccourci=create_desktop_shortcut,
langue=current_language)
tray.Tray("myapp", Path("assets/myapp.ico"), actions).executer()
Python 3.8 or later: blink2video still ships a Windows 7 build on 3.8.
License
GPL-3.0-or-later, like the four apps.
Metadata
Release files for nico579-commons 0.3.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 | |
|---|---|---|---|
| nico579_commons-0.3.2.tar.gz | 33.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nico579_commons-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 60.7 kB
Release files / nico579_commons-0.3.2.tar.gz
| Download URL | nico579_commons-0.3.2.tar.gz |
|---|---|
| Size | 33.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8544a4d8129a5aa027dbf0eadce3083b21755435d475b094146cc50d5dc7d194
|
|
BLAKE2b-256 checksum How to use checksums |
cf705482c053e1bea66b2ed994ddf614d7ba58b0778c44cee38513a4f8eebbbf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency logRelease files / nico579_commons-0.3.2-py3-none-any.whl
| Download URL | nico579_commons-0.3.2-py3-none-any.whl |
|---|---|
| Size | 27.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7f575b38afd09a690003993287748d3b205a27abe1e7ca7c6b0c83c696538a1c
|
|
BLAKE2b-256 checksum How to use checksums |
325520fed283a362e45c2de1919d825ccf0028b9bad6bd377b3b2506b0d22137
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 29, 2026.
Transparency log