primo commit
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user