FluxCast streams a Linux desktop to a TV.
web_demo.mp4
Current validated scope:
wfdis the primary path and the only mode tested as release-ready.dlnaworks as fallback.castis experimental and currently not working in the tested Samsung setup.
The project currently focuses on WFD/Miracast on Linux (Hyprland/wlroots class setups).
DLNA and Cast are available, but they are best treated as fallback or experimental paths.
Current limitation:
- KDE/GNOME Wayland desktop capture uses
xdg-desktop-portalin WFD mode. - For portal mode, install Python dependency
dbus-nextand allow screen-share in the desktop picker dialog.
Default WFD run (interactive monitor/peer selection):
python3 src/main.pyWFD with latency/session JSONL log:
python3 src/main.py --wfd-latency-logDLNA fallback:
python3 src/main.py --protocol dlna --transport hlsCast mode (optional, if your TV supports it):
python3 src/main.py --protocol castForce backend manually (if auto is not suitable on your session):
python3 src/main.py --capture-backend wf-recorder
python3 src/main.py --capture-backend x11grab
python3 src/main.py --protocol wfd --wfd-capture-backend portal
python3 src/main.py --protocol wfd --wfd-capture-backend wf-recorder
python3 src/main.py --protocol wfd --wfd-capture-backend x11grabscreen + audio capture -> H.264/AAC RTP -> Wi-Fi Direct + RTSP -> TV WFD receiver
This is the lowest-latency and most predictable path in the current codebase.
desktop capture -> HTTP stream -> DLNA/UPnP AVTransport -> native TV player
- Prefer
--transport hlson Samsung TVs. progressive-tscan freeze or stutter on some models.
- Requires a TV/device with real Google Cast support.
- Requires
pychromecast. - Not reliable on many Samsung TV models.
Download the latest FluxCast-x86_64.AppImage from the Releases page, then:
chmod +x FluxCast-x86_64.AppImage
./FluxCast-x86_64.AppImageOn first launch FluxCast will ask for your password once to install a system file for Wi-Fi Direct.
Depending on your desktop environment, you may need to install:
- Hyprland / Sway:
wf-recorder,ffmpeg - KDE / GNOME:
gst-plugins-ugly(package name varies by distro)
pip install fluxcast
sudo fluxcast-install-systemfluxcast-install-system installs the D-Bus policy, desktop entry, and system packages (GStreamer, ffmpeg, NetworkManager, etc.). Run it once after the pip install.
yay -S fluxcast-git
# or
paru -S fluxcast-gitgit clone https://github.com/IlyaP358/fluxcast.git
cd fluxcast
pip install -r requirements.txt
sudo meta/install.sh
sudo systemctl reload dbus
sudo gtk-update-icon-cache /usr/share/icons/hicolorWarning
If PIP refuses to install the required libraries to your system, you will need to do that yourself using your distro's package manager.
DLNA/Cast features require additional packages listed in requirements.txt.
WFD mode also depends on system binaries, not only Python packages:
ffmpegwf-recorder(Wayland/wlroots capture path)xdg-desktop-portal(+ desktop backend:xdg-desktop-portal-kde/xdg-desktop-portal-gnome/xdg-desktop-portal-wlr)nmcli,gdbus,iw,wpa_cli(Wi-Fi Direct and diagnostics)pactl(audio monitor autodetect)
Use:
python3 src/main.py --doctorto check your machine before running WFD.
Note: on KDE/GNOME Wayland, WFD auto backend now prefers portal first.
Note: on firewalld systems, FluxCast opens the WFD RTSP port (7236/tcp) for the duration of a session and closes it on exit (no-op without firewalld; disable with --wfd-no-firewall). See DOCUMENTATION.md -> "WFD and firewalld".
Detailed flags, modes, and usage examples:
documentation/DOCUMENTATION.md
ThinkBook 14 G4+ IAP
- CPU: Intel i5-1240P (16 threads) up to 4.40 GHz
- GPU: Intel Iris Xe Graphics
- RAM: 16 GB
Dell XPS 13 Plus
- CPU: Intel i5-1260P (16 threads) up to 4.70 GHz
- GPU: Intel Iris Xe Graphics
- RAM: 16 GB LPDDR5
ThinkPad T14 Gen 4
- CPU: Intel i7-1355U (12 threads) up to 5.00 GHz
- GPU: Intel Iris Xe Graphics
- RAM: 32 GB
Arch Linux
- Kernels: 7.0.8-arch1-1, 6.12.91-1-lts612
- WMs: Hyprland (0.55.2)
- DEs (for testing): KDE Plasma (6.6.5) | GNOME (50.1)
- Shell: zsh (5.9), fish (4.7.1)
- Terminal: kitty (0.46.2, 0.47.1)
CachyOS
- Kernels: 7.0.3-1-cachyos
- DEs (for testing): KDE Plasma (6.6.4)
- Shell: bash (5.3.9)
- Terminal: konsole (26.4.0)
