Files
2026-08-29 00:34:41 +02:00

4.0 KiB

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

  1. Una Gtk.ApplicationWindow piena di una WebKit2.WebView (WebKitGTK 4.1) carica l'URI richiesto;
  2. 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;
  3. viene creata una finestra per ogni monitor, dimensionata e posizionata sulla geometria del monitor (monitor.get_geometry()), con aggiornamento automatico su eventi monitor-added / monitor-removed / size-changed;
  4. 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;
  5. 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: xdotool installato (sudo apt install xdotool oppure sudo 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.