Skip to main content

FluxCast

FluxCast streams a Linux desktop to a TV.

Release Python Platform Issues PRs

Demo

https://github.com/user-attachments/assets/ce01804c-2f86-4a5d-8ecf-d6f2a72f55d1

Project Status

Current validated scope:

  • wfd is the primary path and the only mode tested as release-ready.
  • dlna works as fallback.
  • cast is 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-portal in WFD mode.
  • For portal mode, install Python dependency dbus-next and allow screen-share in the desktop picker dialog.

Quick Start

Default WFD run (interactive monitor/peer selection):

python3 src/main.py

WFD with latency/session JSONL log:

python3 src/main.py --wfd-latency-log

DLNA fallback:

python3 src/main.py --protocol dlna --transport hls

Cast mode (optional, if your TV supports it):

python3 src/main.py --protocol cast

Force 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 x11grab

What Works Best

WFD (Primary)

screen + 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.

DLNA (Fallback)

desktop capture -> HTTP stream -> DLNA/UPnP AVTransport -> native TV player
  • Prefer --transport hls on Samsung TVs.
  • progressive-ts can freeze or stutter on some models.

Cast (Optional)

  • Requires a TV/device with real Google Cast support.
  • Requires pychromecast.
  • Not reliable on many Samsung TV models.

Installation

AppImage

Download the latest FluxCast-x86_64.AppImage from the Releases page, then:

chmod +x FluxCast-x86_64.AppImage
./FluxCast-x86_64.AppImage

On 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)

PyPI

pip install fluxcast
sudo fluxcast-install-system

fluxcast-install-system installs the D-Bus policy, desktop entry, and system packages (GStreamer, ffmpeg, NetworkManager, etc.). Run it once after the pip install.

Arch Linux - AUR

yay -S fluxcast-git
# or
paru -S fluxcast-git

From source

git 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/hicolor

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.

System tools (just as important)

WFD mode also depends on system binaries, not only Python packages:

  • ffmpeg
  • wf-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 --doctor

to 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".

Documentation

Detailed flags, modes, and usage examples:
documentation/DOCUMENTATION.md

Tested Environment

Hardware:

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

Software:

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)

Metadata

Release files for fluxcast 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fluxcast 0.1.6
File Size Uploaded
fluxcast-0.1.6.tar.gz 166.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fluxcast 0.1.6
File Interpreter ABI Platform
fluxcast-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 343.0 kB

Release files / fluxcast-0.1.6.tar.gz

Download URL fluxcast-0.1.6.tar.gz
Size 166.5 kB
Tags Source
SHA-256 checksum
How to use checksums
fdc62c3bd9642e3917fd5c73c681659f3080527c0e6521d5a4fcd31926d9e523
BLAKE2b-256 checksum
How to use checksums
6c751a4906f75d4435de1d0aabb90dad359f20e4690eebdc1ce58f7a83bb045a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 12, 2026.

Transparency log

Release files / fluxcast-0.1.6-py3-none-any.whl

Download URL fluxcast-0.1.6-py3-none-any.whl
Size 176.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d95396be8bfc97bbd4906183bf5d714721d8648f853be667b6c822ea4ba361a6
BLAKE2b-256 checksum
How to use checksums
bd61807c3bfcfc50190393bd060fb800f2fc1b02cbb4463264d68f838f52fb9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 12, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.7

2 release files

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page