WayCast is a modern Wayland screen casting application that streams your desktop or selected windows to web browsers over your local network with minimal latency.
Born from a creative need: WayCast was created out of necessity during video color grading work. When you're editing in a color-managed environment and your single desktop monitor isn't enough—you need to see how your work looks on real OLED screens, on calibrated tablets, on phones, all in real-time as you adjust.
For creators, by a creator: Whether you're color grading video, designing graphics, editing photos, or doing any visual work where accurate color representation matters, WayCast lets you:
- Preview your desktop on multiple devices simultaneously
- Use your tablet's OLED screen as a reference monitor
- Check how content looks on different displays without export/import cycles
- Work from your Linux workstation while monitoring on calibrated mobile displays
- Stream your creative workflow to clients or collaborators instantly
No more alt-tabbing between monitors. No more exporting test files. Just instant, live feedback on the screens that matter.
- Screen & Window Capture: Share your entire screen or individual windows
- Web-Based Streaming: View streams directly in any modern web browser—no client software needed
- QR Code Connection: Instantly connect from mobile devices by scanning a QR code
- Low Latency: Optimized streaming pipeline for real-time responsiveness
- Modern GTK4 Interface: Clean, native GNOME integration using Adwaita
- OS: Linux with Wayland (GNOME, KDE Plasma 6, Sway, etc.)
- Desktop Portal: XDG Desktop Portal with ScreenCast support
- Dependencies:
- Python 3.10+
- GTK 4
- GStreamer 1.0
- FFmpeg 7.x (with H.264 encoder support)
- PipeWire
- Launch WayCast from your application menu or terminal
- Click "Select Screen/Window" to choose what to share
- Scan the QR code or navigate to the displayed URL from any device on your network
- View the stream in your browser—it starts automatically
The stream uses H.264/MPEG-TS for broad browser compatibility and plays using mpegts.js for low-latency live playback.
- Frontend: GTK4/Adwaita UI with XDG Desktop Portal integration
- Capture: PipeWire file descriptor passed to GStreamer
pipewiresrc - Encoding: FFmpeg with OpenH.264 (software) or hardware encoders (VAAPI/QSV/NVENC when available)
- Streaming: Flask HTTP server with chunked Transfer-Encoding
- Playback: Browser-side using mpegts.js for MPEG-TS stream parsing
Licensed under the Apache License, Version 2.0. See COPYING for details.
Contributions are welcome! Please feel free to submit issues or pull requests.