kmsgrab e ScreenShot2: esiti sperimentali documentati

- kmsgrab non praticabile: piano primario AR30 con modifier AMD DCC/tiled, ffmpeg
  rifiuta il framebuffer prima di applicare format/modifier
- KWin ScreenShot2: NoAuthorized anche con desktop entry system-wide
- indicatore del vassoio identificato come SNI di xdg-desktop-portal-kde
  (titolo 'Trasmissione dello schermo')
- backend kmsgrab comunque implementato e selezionabile (capture=kmsgrab)
- setup-kmsgrab.sh: installa via pkexec una copia di ffmpeg con cap_sys_admin+ep
This commit is contained in:
enne2
2026-11-01 13:22:03 +01:00
parent db47640846
commit 47b5c09fa1
4 changed files with 188 additions and 15 deletions
+20 -4
View File
@@ -88,6 +88,9 @@ La scheda (CH340, `1a86:7523`) **non espone un iSerial**: verificato con
| `/dev/serial/by-path/pci-0000:65:00.3-usb-0:2:1.0-port0` | legato alla porta USB fisica | sì |
| `/dev/ambilight` (regola udev) | symlink creato da noi | sì |
> **Su questa macchina la regola NON è installata**: scelta esplicita dell'utente di
> lasciare `ttyUSB0` come assegnato dal kernel. I file restano nel repo come opzione.
Installa la regola (richiede sudo, una volta):
```sh
@@ -117,17 +120,30 @@ finché la sessione di condivisione è attiva. Verificato su questa macchina:
esiste la voce "Configure System Tray → Entries" per nasconderlo: è un indicatore
di stato del shell, per scelta di KDE.
**Il pallino è uno StatusNotifierItem pubblicato da `xdg-desktop-portal-kde`** (titolo
"Trasmissione dello schermo"): quindi è un elemento del vassoio con visibilità
configurabile da *Configura il vassoio di sistema → Voci* (impostandolo su "Sempre
nascosto" sparisce dal pannello e resta nel popup espanso).
Le alternative per non averlo:
1. **KWin ScreenShot2** (nessun portal, nessun indicatore): KWin autorizza solo i
1. **KWin ScreenShot2** (nessun portal, nessun indicatore) — **rifiutato su questa
macchina**: testato sia con `.desktop` utente sia con entry system-wide in
`/usr/local/share/applications` (`Exec=/usr/bin/python3`, `X-KDE-DBUS-Restricted-Interfaces=org.kde.KWin.ScreenShot2`,
`kbuildsycoca6`): la risposta resta `org.kde.KWin.ScreenShot2.Error.NoAuthorized`. KWin autorizza solo i
processi con un `.desktop` che dichiara `X-KDE-DBUS-Restricted-Interfaces=org.kde.KWin.ScreenShot2`.
Provato con un `.desktop` utente (`Exec=/usr/bin/python3` e `python3.14`) + `kbuildsycoca6`:
risponde ancora `org.kde.KWin.ScreenShot2.Error.NoAuthorized`. Non provato l'entry
in `/usr/local/share/applications` (richiede sudo). Se funziona, la cattura è un
`CaptureArea` della sola fascia (nessun indicatore, ma costo CPU per frame).
2. **kmsgrab** (`ffmpeg -f kmsgrab`) da un servizio privilegiato con `CAP_SYS_ADMIN`:
nessun portal e nessun indicatore, ma cattura DRM grezza (piano/format legati alla
GPU) e un servizio di sistema: più fragile.
2. **kmsgrab** (`ffmpeg -f kmsgrab`) con `CAP_SYS_ADMIN`: **provato e non praticabile su
questa macchina** (Radeon 780M + KWin). Il piano primario è `plane-3` (id 206),
`crtc-0`, `fb=463`, `format=AR30` (`0x30335241`) con `modifier=0x200000010437b04`
(AMD DCC/tiled): ffmpeg risponde `Framebuffer pixel format 30335241 is not a known
supported format` e fallisce **prima** di applicare `-format`/`-format_modifier`
(provati `bgr0`, `rgb0`, `0rgb`, `bgra`, `x2rgb10le`, `-format_modifier 0`,
`-plane_id 206`). Anche superando il controllo, il layout tiled/DCC richiederebbe
un import GBM/EGL o VAAPI, che kmsgrab non fa.
3. Tenere il portal: costo GPU minimo, ~78 fps, indicatore visibile.
## Note