89d45f2a55
punktfunk-session streams one --connect session in an SDL3 window: ash
swapchain with a transfer-only letterboxed blit of the software-decode
path (no graphics pipeline until the phase-2 dmabuf/CSC pass), the
ui_stream input-capture state machine on SDL events (scancode→VK table
cross-checked against the evdev one), gamepads via a new caller-pumped
GamepadService mode (SDL video owns the main thread here), and the
shell↔session stdout contract: {"ready":true}, per-window stats:
lines, JSON error + exit codes 0/2/3/4. Strict trust — no pin, no
connect. Design: punktfunk-planning linux-client-rearchitecture.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
29 lines
1.4 KiB
Markdown
29 lines
1.4 KiB
Markdown
# punktfunk-session
|
|
|
|
The Vulkan session binary: one stream per invocation in an SDL3 window — no UI toolkit,
|
|
no widgets, terminal stats. The power-user / gamescope stream client, and the stage-2
|
|
presenter of the Linux client re-architecture (punktfunk-planning:
|
|
`linux-client-rearchitecture.md`).
|
|
|
|
```
|
|
punktfunk-session --connect host[:port] [--fp HEX] [--launch id] [--fullscreen] [--stats]
|
|
```
|
|
|
|
Reads the same identity / known-hosts / settings stores as the desktop client
|
|
(`punktfunk-client`) — pair there (or via its headless `--pair`) first; this binary never
|
|
connects to a host it has no pinned fingerprint for (`--fp HEX` overrides the store).
|
|
|
|
Stdout is the machine interface: `{"ready":true}` after the first presented frame,
|
|
`stats: …` once per second (Ctrl+Alt+Shift+S toggles, `--stats` forces on), one
|
|
`{"error"|"ended": …}` JSON line on the way out. Logs go to stderr. Exit codes: `0`
|
|
clean end, `2` connect failed, `3` trust rejected / pairing required, `4` presenter
|
|
init failed.
|
|
|
|
In-stream keys match the desktop client: click captures input (Ctrl+Alt+Shift+Q
|
|
releases), Ctrl+Alt+Shift+D disconnects, F11 toggles fullscreen; the controller escape
|
|
chord (L1+R1+Start+Select, hold to disconnect) works the same.
|
|
|
|
Current phase (1): software decode presented via a transfer-only blit — request path
|
|
`--connect` only. The VAAPI dmabuf → Vulkan zero-copy import, HDR/P010, and the Skia
|
|
console UI (`--browse`) are later phases of the plan.
|