Linux X11/Xvfb: auto-sample cursor telemetry when ScreenCast METADATA is unavailable
Mantenedores costumam responder em até 1 dia
@Jasonsu22 já está trabalhando nisso.
Desde 28/10/2026.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- electron, linux, typescript
- Domínio
- backend-api-design, desktop
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- TypeScript
- Estrelas
- 3.7k
- Forks
- 231
- Merge médio
- 15h 10min
- PRs com merge (30d)
- 324
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de getopenscreen/openscreen
-
Native review wanted: machine-translated recording bar tooltips (14 locales)Talvez livre de novo @auberginewly assumiu há 21 dias e não há nenhum pull request aberto. Abertagood first issue help wanted
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
getopenscreen/openscreen#913 · 5 comentários ·
Mantenedores costumam responder em até 1 dia
-
[Bug]: Windows update click opens the full NSIS wizard instead of a UAC promptTalvez já em andamento @EtienneLescot assumiu hoje. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 30/100
getopenscreen/openscreen#1437 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
getopenscreen/openscreen#1436 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
getopenscreen/openscreen#1435 ·
Mantenedores costumam responder em até 1 dia
-
QA: e2e pass on v2.2.0-rc.1 (macOS, Windows)Talvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 55/100
getopenscreen/openscreen#1431 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de getopenscreen/openscreen
Issues semelhantes
-
area: triage theme: undefined
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
jhipster/generator-jhipster#35895 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
paperclipai/paperclip#18396 ·
Mantenedores costumam responder em até 1 dia
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
lingdojo/kana-dojo#33380 · 1 comentário · 5 reações ·
Mantenedores costumam responder em até 1 dia
-
chore other
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
alastair-smith/card-games#342 ·
Mantenedores costumam responder em até 1 dia