Linux X11/Xvfb: auto-sample cursor telemetry when ScreenCast METADATA is unavailable
Maintainer antworten meist innerhalb von 1 Tag
@Jasonsu22 arbeitet bereits daran.
Seit 28.10.2026.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- electron, linux, typescript
- Bereich
- backend-api-design, desktop
Rechercherichtung
Start by reading the existing openscreen record --cursor editable-overlay and openscreen export --auto-zoom paths, then inspect the fork implementation linked in the issue. Determine how X11 pointer samples can produce the v2 sidecar when ScreenCast METADATA is unavailable, and confirm the schema with maintainers; done means automatic sampling and sidecar output work on the described X11 setup.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
On some Linux cloud-agent desktops (X11 + Xvfb), the xdg-desktop-portal ScreenCast interface reports empty source/cursor modes (AvailableSourceTypes=0 / no METADATA cursor mode). OpenScreen’s live editable-cursor capture therefore cannot write a .cursor.json sidecar even though the screen can still be recorded and the pointer can be sampled separately.
Agents can still:
- Record with ffmpeg
x11grab(draw_mouseoff) or OpenScreen’s non-METADATA path - Sample pointer positions + clicks (
Electron screen.getCursorScreenPoint(),xdotool/xev/xinput/libinput) - Drive
openscreen export --auto-zoomfrom a v2<video>.mp4.cursor.jsonsidecar
We implemented an automatic fallback on our fork and would like to contribute it upstream.
Environment (repro host)
| Item | Value |
|---|---|
| Host | Grok Bot cloud Linux box (grok-bot-vm-316768464) |
| Kernel | Linux 6.12.94+ x86_64 |
| OS | Debian GNU/Linux 13 (trixie) |
| CPU / RAM | 8 vCPU / ~15 GiB |
| Session | X11 on DISPLAY=:2 (Xvfb 1920x1200x24 + Mutter/GNOME pieces) |
| Wayland | No |
| Portal | xdg-desktop-portal (+ gnome/gtk) present; ScreenCast reports no usable METADATA cursor mode (AvailableSourceTypes=0 / empty cursor modes in practice; CreateSession / editable capture fails) |
| GPU | Mesa llvmpipe (software Vulkan/GL); OpenScreen export falls back to CPU |
| OpenScreen | Linux AppImage 2.1.2 |
| PipeWire | Present (pipewire + wireplumber) |
| Pointer tools | xdotool, xev available |
Proposed behavior
When ScreenCast METADATA cursor capture is unavailable on X11:
- Automatically sample the pointer during record
- Write
<recording>.mp4.cursor.json(v2:timeMs, normalizedcx/cy,move|click|mouseup) next to the video - So
openscreen export --auto-zoomneeds no manual import
Optional CLI for external ffmpeg tracks: openscreen cursor import --csv … --clicks … --video …
Env knobs: OPENSCREEN_DISABLE_X11_CURSOR=1, OPENSCREEN_FORCE_X11_CURSOR=1
Workaround today (without the PR)
ffmpeg x11grab + CSV/clicks → converter → sidecar → openscreen export --auto-zoom
Ask
- Accept auto X11 sampling when METADATA is missing (primary path for agent hosts)
- Document the sidecar / optional CLI import path
- Confirm preferred schema fields beyond
{ version: 2, samples: [...] }
Happy to adjust the PR to maintainer preference.
Related
- CLI:
openscreen export --auto-zoom,openscreen record --cursor editable-overlay - Fork implementation: https://github.com/Jasonsu22/openscreen/pull/1
- Vorherrschende Sprache
- TypeScript
- Sterne
- 3.7k
- Forks
- 231
- Ø Merge
- 16 Std. 38 Min.
- Gemergte PRs (30 T.)
- 327
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus getopenscreen/openscreen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
getopenscreen/openscreen#1423 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Native review wanted: machine-translated recording bar tooltips (14 locales)Evtl. wieder frei @auberginewly hat das vor 21 Tagen übernommen, und es ist kein Pull Request offen. Offengood first issue help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
getopenscreen/openscreen#913 · 5 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
QA: e2e pass on v2.2.0-rc.1 (macOS, Windows)Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 55/100
getopenscreen/openscreen#1431 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 3/5 Ein halber Tag Anfängerfreundlichkeit 68/100
getopenscreen/openscreen#1428 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
getopenscreen/openscreen#1426 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in getopenscreen/openscreen
Ähnliche Issues
-
area:desktop area:ui bug platform:macos
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
anthropics/claude-code#106183 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
feature:App-Tour feature:Chat ready Web
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
digitalfabrik/integreat-app#4523 · 2 Reaktionen ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Required Lexical field accepts two empty paragraphsEvtl. vergeben @lazerg hat das heute übernommen. OffenBug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
payloadcms/payload#19222 ·
Maintainer antworten meist innerhalb von 1 Tag