Webpaper
Pagina web come sfondo del desktop. Ispirato a Hidamari, dal quale è stato estratto e ridotto all'essenziale il meccanismo della pagina web come wallpaper: niente server DBus, niente video, niente GUI di controllo — solo lo sfondo.
Come funziona
- Una
Gtk.ApplicationWindowpiena di unaWebKit2.WebView(WebKitGTK 4.1) carica l'URI richiesto; - la finestra viene marcata con
Gdk.WindowTypeHint.DESKTOP: il window manager la tiene in fondo allo stack, sotto tutte le altre finestre, esattamente come lo sfondo nativo; - viene creata una finestra per ogni monitor, dimensionata e posizionata
sulla geometria del monitor (
monitor.get_geometry()), con aggiornamento automatico su eventimonitor-added/monitor-removed/size-changed; - il backend è forzato a X11 (
GDK_BACKEND=x11): le finestre DESKTOP non funzionano su Wayland nativo, quindi su una sessione Wayland GDK ricade su XWayland; - workaround NVIDIA: se è presente una GPU NVIDIA, WebKit viene puntato su un render node Mesa o su buffer SHM (il renderer DMA-BUF di WebKitGTK fallisce sui driver NVIDIA e la pagina resterebbe bianca).
Requisiti
- Python 3 con PyGObject
- GTK 3
- WebKitGTK 4.1
Debian/Ubuntu:
sudo apt install python3-gi gir1.2-gtk-3.0 gir1.2-webkit2-4.1
Arch:
sudo pacman -S python-gobject gtk3 webkit2gtk-4.1
Uso
# da questa cartella, un file HTML locale:
python3 -m webpaper /percorso/pagina.html
# oppure un URL:
python3 -m webpaper https://esempio.com
# DUAL MONITOR: una pagina per monitor (prima sorgente = primo monitor,
# seconda = secondo monitor):
python3 -m webpaper /percorso/pagina1.html /percorso/pagina2.html
# log di debug:
python3 -m webpaper -d /percorso/pagina.html
# non sistemare le icone desktop (le icone restano sotto il wallpaper):
python3 -m webpaper --no-fix-icons /percorso/pagina.html
Con una sola sorgente, viene mostrata su tutti i monitor (comportamento originale). Con più sorgenti la mappatura è 1:1 nell'ordine dei monitor; se i monitor sono più delle sorgenti, gli extra ripetono l'ultima sorgente, se le sorgenti superano i monitor quelle in eccesso vengono ignorate (con un warning nel log).
In alternativa, installabile come comando:
pip install -e .
webpaper /percorso/pagina.html
Per uscire: click destro sulla pagina → Esci (oppure Ctrl+C).
Autostart al login
Crea il file ~/.config/autostart/webpaper.desktop con:
[Desktop Entry]
Type=Application
Name=Webpaper
Comment=Pagina web come sfondo del desktop
Exec=sh -c "cd /percorso/del/progetto && sleep 3 && exec python3 -m webpaper /percorso/pagina.html"
Terminal=false
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=0
Nota: il sleep 3 è importante — dà tempo a nemo-desktop (le icone della
scrivania) di partire per primo. Se webpaper parte prima, nemo-desktop si
rifiuta di avviarsi ("Desktop already managed") e le icone spariscono del
tutto.
Per disattivare l'autostart: elimina il file oppure toglilo da Impostazioni di sistema → Applicazioni all'avvio.
Note
- Il meccanismo funziona su X11 e XWayland (Wayland puro non è supportato, come in Hidamari).
- Icone della scrivania: le estensioni che disegnano le icone desktop
(nemo-desktop su Cinnamon, DING su GNOME) usano a loro volta finestre di
tipo DESKTOP; il nostro wallpaper, essendo mappato dopo, le copre. All'avvio
Webpaper le porta automaticamente sopra il wallpaper (attivandole una a una,
via
xdotool). Requisito:xdotoolinstallato (sudo apt install xdotooloppuresudo pacman -S xdotool). Se non è presente, o con--no-fix-icons, le icone restano sotto il wallpaper. - La pagina è un vero browser (WebKitGTK): funzionano animazioni CSS, canvas/WebGL, iframe, ecc. L'audio della pagina viene riprodotto; per mutarlo non c'è un'API GTK semplice (in Hidamari è un TODO).
Licenza
GPL-3.0-or-later, coerente con il progetto originale Hidamari dal quale deriva.