120 lines
4.0 KiB
Markdown
120 lines
4.0 KiB
Markdown
# 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.
|