# Webpaper Pagina web come sfondo del desktop. Ispirato a [Hidamari](https://github.com/jeffshee/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: ```sh sudo apt install python3-gi gir1.2-gtk-3.0 gir1.2-webkit2-4.1 ``` Arch: ```sh sudo pacman -S python-gobject gtk3 webkit2gtk-4.1 ``` ## Uso ```sh # 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: ```sh 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: ```ini [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](https://github.com/jeffshee/hidamari) dal quale deriva.