Skip to content

feat(tv-tauri): add Linux X11/XWayland desktop playback - #2

Draft
taubut wants to merge 2 commits into
Quixomatic:mainfrom
taubut:feat/linux-desktop-client
Draft

feat(tv-tauri): add Linux X11/XWayland desktop playback#2
taubut wants to merge 2 commits into
Quixomatic:mainfrom
taubut:feat/linux-desktop-client

Conversation

@taubut

@taubut taubut commented Aug 26, 2026

Copy link
Copy Markdown

What & why

Adds an initial Linux implementation for the Tauri TV/desktop viewer (apps/tv-tauri). Linux was the remaining no-op desktop target because libmpv wid embedding needed a native surface that could coexist with WebKitGTK.

This change:

  • creates a dedicated X11 child window for libmpv instead of drawing into the GTK toplevel;
  • keeps that child below the transparent webview so HTML player chrome remains interactive;
  • moves and scales the child between full playback and the guide mini-player aperture;
  • derives X11 geometry from the realized parent size, including display-scale changes;
  • selects XWayland when launched from a Wayland session because mpv wid requires an XID;
  • forces libmpv-compatible LC_NUMERIC=C before mpv_create();
  • avoids changing Tauri's GTK widget hierarchy, which also avoids the undecorated-resize panic seen with wrapper-widget approaches.

The server, scheduling, database, Docker, and release-packaging paths are intentionally untouched. Native Wayland is not implemented; Linux currently requires X11 or XWayland with DISPLAY set.

Area

  • Server / admin (backend, channels, scheduling, AI lineup, imports)
  • A TV / player client (Apple TV, Fire TV, Android TV, Roku, webOS, tv-web)
  • Desktop server app (Windows / macOS / Linux)
  • Docs / website (getairwave.tv)
  • CI / tooling

Testing

  • cargo check --locked
  • tsc --noEmit for apps/tv-tauri
  • Vite production build for apps/tv-tauri
  • tauri build --no-bundle on x86_64 CachyOS
  • Manual Linux/XWayland validation of startup, libmpv attachment, full playback, and guide mini-player behavior on the implementation this was extracted from

This is opened as a draft so the final beneath-WebKit stacking behavior can receive another visual pass before merge.

Checklist

  • Typechecks / builds locally (pnpm check-types, relevant build)
  • I did not bump versions or tag (maintainer handles releases)
  • No secrets, certs, or .env values committed

@vercel

vercel Bot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
airwave-site Skipped Skipped Aug 26, 2026 11:33am

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant