⏳ Year Progress Wallpaper — a minimalist desktop wallpaper generator and daily tracker with a dot-grid calendar, Stoic quotes, and automatic midnight updates. Python + PyInstaller · Windows, macOS, Linux
Python
0
11 commits
updated Sep 29, 2026
A minimalist, high-definition desktop wallpaper generator and daily tracker for Windows, macOS and Linux. Inspired by the Stoic Memento Mori concept and modern minimalist dashboards.

| Windows | macOS | Linux | |
|---|---|---|---|
| Generate & apply wallpaper | ✅ Registry + SystemParametersInfo | ✅ NSWorkspace (pyobjc), osascript fallback | ✅ gsettings (GNOME/Cinnamon/MATE), plasma (KDE), xfconf (Xfce), feh/sway fallbacks |
| Per-monitor wallpaper | ✅ IDesktopWallpaper (one render per display) | ✅ per-screen NSWorkspace | — (desktops apply one image across all outputs) |
| Login/startup integration | ✅ HKCU Run key | ✅ Launch Agent | ✅ XDG autostart entry |
| System tray | ✅ | ✅ | ✅ (AppIndicator/GTK backend required) |
| Control panel UI | ✅ pywebview (WebView2) + Tk fallback | ✅ pywebview (WKWebView) + Tk fallback | ✅ pywebview (WebKitGTK) + Tk fallback |
| Lock screen control | ✅ | — (Windows-only, hidden in UI) | — (Windows-only, hidden in UI) |
| Data directory | %LOCALAPPDATA%\YearProgressWallpaper | ~/Library/Application Support/YearProgressWallpaper | $XDG_DATA_HOME/YearProgressWallpaper (default ~/.local/share/...) |
Linux system packages (Debian/Ubuntu names; needed at runtime):
sudo apt install python3-gi gir1.2-appindicator3-0.1 gir1.2-webkit2-4.1
# Tray fallback if AppIndicator is unavailable:
pip install python-xlib
macOS notes: the first wallpaper apply may prompt for automation permission (osascript fallback only — the primary NSWorkspace path needs none). Unsigned builds require right-click → Open on first launch (Gatekeeper); signing/notarization is configured at build time when an Apple Developer ID is available.
⚪).🔘) marking your exact place in time.⚫).Reset Default (100%) button.#000000), Cyber Midnight, Emerald Zen, Golden Hour, Solar Crimson, Royal Amethyst, Nordic Frost, Matcha, Terracotta, Ocean Abyss, Sepia, Tokyo Rain, Rose Quartz, Titanium, Nord, Solarized Dark, and Cyberpunk.Shuffle Random button.Reference (10 Columns): Faithful reproduction of the mobile reference screenshot, centered as an elegant pillar.Balanced (20 Columns): Optimized for 16:9 and 16:10 widescreen desktop displays (20 × 19).Wide Matrix (25 Columns): Sleek compact widescreen grid (25 × 15).Calendar (53 Columns): GitHub contribution matrix style (53 weeks × 7 days).HKCU\Software\Microsoft\Windows\CurrentVersion\Run.~/Library/LaunchAgents.~/.config/autostart.IDesktopWallpaper / per-screen NSWorkspace.multi_monitor).check_updates; manual Check now button with live status in the System tab of either control panel).YearProgress.exeYearProgress.app./YearProgressDouble-click:
run.bat
python main.py
PyInstaller cannot cross-compile — build natively on each target OS:
# Windows
pip install -r requirements-dev.txt
pyinstaller --noconfirm YearProgress.spec # → dist\YearProgress.exe
# macOS → dist/YearProgress.app
pip install -r requirements-dev.txt
pyinstaller --noconfirm YearProgress.spec
# Linux → dist/YearProgress (build on the oldest glibc you support,
# e.g. an Ubuntu 22.04 container, for maximum compatibility)
pip install -r requirements-dev.txt
pyinstaller --noconfirm YearProgress.spec
Before building, run the lint gate that must stay green:
ruff check .
python main.py : Launches the full modern Control Panel and starts the background tray + midnight scheduler.python main.py --minimized : Starts directly in the system tray (used by login startup).python main.py --startup : Same as --minimized; marks an OS startup launch.python main.py --update-now : Generates and sets today's wallpaper immediately and exits.python main.py --lockscreen IMAGE : Sets the Windows lock screen to IMAGE (runs elevated; internal use, invoked by the UI).python main.py --lockscreen-clear : Restores the default Windows lock screen (runs elevated; internal use).%LOCALAPPDATA%\YearProgressWallpaper, macOS: ~/Library/Application Support/YearProgressWallpaper, Linux: $XDG_DATA_HOME/YearProgressWallpaper).
settings.json: All user preferences (zoom level, custom colors, layout style, quote choice, countdown banner and its targets, auto-update toggle, multi-monitor toggle, update-check toggle; plus internal stamps the UIs never edit directly: last_rendered_date, daily_seed, last_update_check).quotes.json: Editable database of motivational quotes (auto-seeded from the bundled catalog on first run; edit this copy to customize).wallpaper_YYYY-MM-DD.bmp / .png: Today's generated desktop wallpaper (the .png is what gets applied on every OS; older days are cleaned up automatically). Multi-monitor runs add wallpaper_YYYY-MM-DD_dN.* siblings sized for each secondary display.preview_thumbnail.png: The live preview image shown in the control panel.web/ (webview UI), assets/fonts/ (typography), app_icon.png / app_icon.ico.Python
69.4%
HTML
30.2%
⏳ Year Progress Wallpaper — a minimalist desktop wallpaper generator and daily tracker with a dot-grid calendar, Stoic quotes, and automatic midnight updates. Python + PyInstaller · Windows, macOS, Linux
Python
0
11 commits
updated Sep 29, 2026
A minimalist, high-definition desktop wallpaper generator and daily tracker for Windows, macOS and Linux. Inspired by the Stoic Memento Mori concept and modern minimalist dashboards.

| Windows | macOS | Linux | |
|---|---|---|---|
| Generate & apply wallpaper | ✅ Registry + SystemParametersInfo | ✅ NSWorkspace (pyobjc), osascript fallback | ✅ gsettings (GNOME/Cinnamon/MATE), plasma (KDE), xfconf (Xfce), feh/sway fallbacks |
| Per-monitor wallpaper | ✅ IDesktopWallpaper (one render per display) | ✅ per-screen NSWorkspace | — (desktops apply one image across all outputs) |
| Login/startup integration | ✅ HKCU Run key | ✅ Launch Agent | ✅ XDG autostart entry |
| System tray | ✅ | ✅ | ✅ (AppIndicator/GTK backend required) |
| Control panel UI | ✅ pywebview (WebView2) + Tk fallback | ✅ pywebview (WKWebView) + Tk fallback | ✅ pywebview (WebKitGTK) + Tk fallback |
| Lock screen control | ✅ | — (Windows-only, hidden in UI) | — (Windows-only, hidden in UI) |
| Data directory | %LOCALAPPDATA%\YearProgressWallpaper | ~/Library/Application Support/YearProgressWallpaper | $XDG_DATA_HOME/YearProgressWallpaper (default ~/.local/share/...) |
Linux system packages (Debian/Ubuntu names; needed at runtime):
sudo apt install python3-gi gir1.2-appindicator3-0.1 gir1.2-webkit2-4.1
# Tray fallback if AppIndicator is unavailable:
pip install python-xlib
macOS notes: the first wallpaper apply may prompt for automation permission (osascript fallback only — the primary NSWorkspace path needs none). Unsigned builds require right-click → Open on first launch (Gatekeeper); signing/notarization is configured at build time when an Apple Developer ID is available.
⚪).🔘) marking your exact place in time.⚫).Reset Default (100%) button.#000000), Cyber Midnight, Emerald Zen, Golden Hour, Solar Crimson, Royal Amethyst, Nordic Frost, Matcha, Terracotta, Ocean Abyss, Sepia, Tokyo Rain, Rose Quartz, Titanium, Nord, Solarized Dark, and Cyberpunk.Shuffle Random button.Reference (10 Columns): Faithful reproduction of the mobile reference screenshot, centered as an elegant pillar.Balanced (20 Columns): Optimized for 16:9 and 16:10 widescreen desktop displays (20 × 19).Wide Matrix (25 Columns): Sleek compact widescreen grid (25 × 15).Calendar (53 Columns): GitHub contribution matrix style (53 weeks × 7 days).HKCU\Software\Microsoft\Windows\CurrentVersion\Run.~/Library/LaunchAgents.~/.config/autostart.IDesktopWallpaper / per-screen NSWorkspace.multi_monitor).check_updates; manual Check now button with live status in the System tab of either control panel).YearProgress.exeYearProgress.app./YearProgressDouble-click:
run.bat
python main.py
PyInstaller cannot cross-compile — build natively on each target OS:
# Windows
pip install -r requirements-dev.txt
pyinstaller --noconfirm YearProgress.spec # → dist\YearProgress.exe
# macOS → dist/YearProgress.app
pip install -r requirements-dev.txt
pyinstaller --noconfirm YearProgress.spec
# Linux → dist/YearProgress (build on the oldest glibc you support,
# e.g. an Ubuntu 22.04 container, for maximum compatibility)
pip install -r requirements-dev.txt
pyinstaller --noconfirm YearProgress.spec
Before building, run the lint gate that must stay green:
ruff check .
python main.py : Launches the full modern Control Panel and starts the background tray + midnight scheduler.python main.py --minimized : Starts directly in the system tray (used by login startup).python main.py --startup : Same as --minimized; marks an OS startup launch.python main.py --update-now : Generates and sets today's wallpaper immediately and exits.python main.py --lockscreen IMAGE : Sets the Windows lock screen to IMAGE (runs elevated; internal use, invoked by the UI).python main.py --lockscreen-clear : Restores the default Windows lock screen (runs elevated; internal use).%LOCALAPPDATA%\YearProgressWallpaper, macOS: ~/Library/Application Support/YearProgressWallpaper, Linux: $XDG_DATA_HOME/YearProgressWallpaper).
settings.json: All user preferences (zoom level, custom colors, layout style, quote choice, countdown banner and its targets, auto-update toggle, multi-monitor toggle, update-check toggle; plus internal stamps the UIs never edit directly: last_rendered_date, daily_seed, last_update_check).quotes.json: Editable database of motivational quotes (auto-seeded from the bundled catalog on first run; edit this copy to customize).wallpaper_YYYY-MM-DD.bmp / .png: Today's generated desktop wallpaper (the .png is what gets applied on every OS; older days are cleaned up automatically). Multi-monitor runs add wallpaper_YYYY-MM-DD_dN.* siblings sized for each secondary display.preview_thumbnail.png: The live preview image shown in the control panel.web/ (webview UI), assets/fonts/ (typography), app_icon.png / app_icon.ico.Python
69.4%
HTML
30.2%