webdesktop

module
v0.0.0-nightly.2.7de83... Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 16, 2026 License: MIT

README

webdesktop

webdesktop streams an existing KDE Plasma Wayland session over WebRTC. It captures through xdg-desktop-portal and PipeWire, encodes with GStreamer, and uses Pion for WebRTC. There is no X11 capture path or fallback.

Features

  • Runtime-configurable VP8, software H.264, and VA-API H.264 encoder profiles
  • Low-latency newest-frame pipeline with bounded queues
  • Server-defined quality presets with client-side resolution, frame-rate, and bitrate overrides
  • Optional Opus desktop audio
  • Portal-authorized pointer and keyboard input through libei
  • Bidirectional rich clipboard synchronization through the Clipboard portal
  • Embedded browser client and WebSocket signaling
  • Persistent portal restore tokens for unattended service restarts

Requirements

  • KDE Plasma on Wayland
  • xdg-desktop-portal with the KDE backend and Clipboard portal v1
  • PipeWire
  • GStreamer with the PipeWire, base, good, bad, and ugly plugins
  • libei

The Nix package supplies the userspace dependencies. The VA-API H.264 profile also needs a working VA-API driver. Desktop audio needs pipewire-pulse.

Run

nix build
install -Dm600 webdesktop.example.yaml \
  "$HOME/.config/webdesktop/config.yaml"
./result/bin/webdesktop serve \
  --config "$HOME/.config/webdesktop/config.yaml"

The first launch opens the Plasma portal prompt. Select a monitor and allow the session to be restored. Then open http://127.0.0.1:8080/.

The service listens on loopback by default. It has no built-in authentication or TLS, so do not expose it directly to an untrusted network.

Documentation

License

Webdesktop is licensed under the MIT License. See THIRD_PARTY_NOTICES.md for bundled third-party notices.

Directories

Path Synopsis
Package capture opens desktop capture streams through xdg-desktop-portal.
Package capture opens desktop capture streams through xdg-desktop-portal.
Package clipboard synchronizes desktop clipboard content with WebRTC peers.
Package clipboard synchronizes desktop clipboard content with WebRTC peers.
cmd
webdesktop command
Package desktop owns the shared portal session used by media and input.
Package desktop owns the shared portal session used by media and input.
Package input serializes remote input and owns control leases.
Package input serializes remote input and owns control leases.
eis
Package eis sends emulated input through a libei sender context.
Package eis sends emulated input through a libei sender context.
internal
app
cli
Package media captures and encodes the selected desktop stream.
Package media captures and encodes the selected desktop stream.
Package webrtc provides shared video transport and WebSocket signaling.
Package webrtc provides shared video transport and WebSocket signaling.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL