primo commit

This commit is contained in:
2026-08-29 00:34:41 +02:00
parent d65038a4e7
commit 5412ff621d
10 changed files with 2308 additions and 2 deletions
+118 -2
View File
@@ -1,3 +1,119 @@
# webpaper
# Webpaper
Pagine web come sfondi animati
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.