Virtual Screen is a Tauri desktop app for using any browser as a KDE Linux second-screen client.
- KDE Linux desktop.
- An HDMI dummy plug connected to the host computer so the system exposes an additional display output.
- A client device with a modern web browser on the same local network.
Download the latest Linux package from the GitHub Releases page, then install the package for your distribution.
- Debian or Ubuntu: download the
.debpackage. - Fedora, openSUSE, or other RPM-based distributions: download the
.rpmpackage. - Arch-family systems: download the release binary when available, or build from source.
- React and Tauri control panel with QR pairing.
- Local Rust server with
/health,/client/:token, and/signal/:token. - One-time token pairing with automatic expiry.
- KDE X11 and KDE Wayland compatibility detection.
- GStreamer capability checks for
webrtcbin, H.264, and VP8. - Browser viewer page for client devices.
- Authenticated MJPEG streaming for KDE X11 capture through the browser viewer.
- GStreamer pipeline planning for the selected resolution and codec.
Automatic virtual display creation is guided unless XRandR exposes a renderable virtual output. XRandR monitor objects without a backing output are not enough for this app because X11 may expose a black framebuffer region instead of pixels from moved windows.
Install the JavaScript and Rust toolchains before starting Tauri. The Tauri CLI shells out to
cargo, so make sure Cargo is available in the same terminal where you run pnpm dev:
command -v cargoIf pnpm dev fails with failed to run 'cargo metadata' ... No such file or directory (os error 2),
Cargo is installed but not on your shell PATH. Load Rust's environment file:
source "$HOME/.cargo/env"For zsh, make that permanent by adding this line to ~/.zshrc:
. "$HOME/.cargo/env"You can append it from the terminal with:
printf '\n. "$HOME/.cargo/env"\n' >> ~/.zshrc
source ~/.zshrcpnpm install
pnpm devpnpm lint
pnpm test
cargo fmt --manifest-path src-tauri/Cargo.toml --check
cargo test --manifest-path src-tauri/Cargo.toml
cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warnings
pre-commit run --all-filespnpm tauri buildThe configured Linux bundles are deb and rpm. On Arch-family systems, the release binary is available at src-tauri/target/release/virtual-screen after building.
