TuxPlayerX is a redesigned desktop streaming player inspired by the visual system used in TuxPulse2.
It is built with React, TypeScript, Tailwind CSS, Tauri v2 and a Rust backend.
Legal notice: TuxPlayerX is only a media player. It does not provide, sell, host, distribute or promote IPTV subscriptions, playlists, MAC portal credentials, TV channels, movies, series or any streaming content. Use only sources you are authorized to access.
- Modern TuxPulse2-style interface
- Dark mode by default
- Optional full-application light mode
- M3U subscription management
- Authorized MAC/Stalker/Ministra-style subscription adapter
- Default subscription support
- Channel loading and search
- Subscription info refresh where supported by the provider
- HTML5/HLS video playback in the app window
- Detachable resizable Picture-in-Picture window
- Single active playback behavior: embedded playback stops when PiP or VLC is opened
- Always-on-top detached player window
- Optional external VLC fallback command
- Local SQLite storage handled by Rust
- GitHub-ready About page and release information
This Tauri version uses the system WebView video engine plus hls.js for HLS streams. It will work best with .m3u8/HLS and browser-compatible streams.
Some IPTV streams that require VLC-specific demuxers/codecs may not play in the WebView. For those streams, use the Open in VLC fallback. A deeper embedded VLC backend can be added later, but it is more complex than the Python/PySide6 version.
- Node.js 20+
- npm
- Rust and Cargo
- Tauri system dependencies
See the official Tauri Linux prerequisites for your distro.
For Debian/Ubuntu/Linux Mint, the usual base set is similar to:
sudo apt update
sudo apt install -y \
build-essential \
curl \
wget \
file \
libwebkit2gtk-4.1-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelfnpm install
npm run tauri:devnpm install
npm run tauri:buildLinux bundles are generated under:
src-tauri/target/release/bundle/
Windows bundles are generated when building on Windows with:
npm install
npm run tauri:build- Open Subscriptions.
- Click Add subscription.
- Select M3U.
- Enter a display name.
- Enter the M3U URL or local file path.
- Optional: add username and password if your provider requires them.
- Enable Use as default if needed.
- Save the subscription.
- Open Player and click Load channels.
- Select a channel and click Play.
- Open Subscriptions.
- Click Add subscription.
- Select MAC.
- Enter a display name.
- Enter the portal URL.
- Enter your authorized MAC address.
- Enable Use as default if needed.
- Save the subscription.
- Open Player and click Load channels.
- Select a channel and click Play.
MAC portal compatibility depends on the provider implementation. Some services may require adapter-specific changes.
- Start a channel in Player.
- Click Detach player.
- A separate always-on-top window opens.
- The embedded player in the main window is stopped automatically.
- Resize the detached window like a normal window.
- Close it when finished.
- Start a channel in Player.
- Click Open in VLC.
- TuxPlayerX opens the current stream in the configured external player.
- The embedded player in the main window is stopped automatically so the stream remains active in only one place.
When you start a new channel in the main window, TuxPlayerX also closes the detached PiP window and stops the previously launched external player process where possible.
MIT License.
This software is provided “as is”, without warranty of any kind. The developer is not responsible for system damage, data loss, misuse, illegal streaming sources, unavailable subscriptions, provider-side changes or playback issues caused by third-party services.
The Tauri icon set is synchronized with the original TuxPlayerX desktop icon, including the sidebar logo, window icon and bundled installer icons.
If npm run tauri:dev fails with a message similar to:
failed to read plugin permissions ... app_hide.toml: No such file or directory
clean the generated Rust/Tauri cache and run again:
./clean_tauri_cache.sh
npm run tauri:devThis usually happens when a Tauri project was moved or copied from another path and the generated src-tauri/target cache still contains stale absolute paths.
The default desktop window starts larger and the Channels panel is more compact, giving the video player more room on first launch.
The application version is managed manually in a single place:
package.json -> versionBefore development/build commands, scripts/sync-version.mjs automatically synchronizes this value to:
src-tauri/Cargo.tomlsrc-tauri/tauri.conf.json
The Rust backend reads the runtime version from Cargo using env!("CARGO_PKG_VERSION"), so do not hardcode the version in src-tauri/src/main.rs.
To change the version, edit only package.json, then run:
npm run sync:version- Detach player opens a clean video-only PiP window
TuxPlayerX supports XMLTV EPG sources.
To enable TV programme guide data:
- Open Settings.
- Paste your XMLTV EPG URL or local XMLTV file path in EPG / XMLTV URL.
- Click Save settings.
- Open Player and start a channel.
- The TV Guide / EPG panel below the video will show available programmes for the selected channel.
EPG matching is done using, in this order:
- M3U
tvg-id, when available; - MAC portal EPG/channel IDs, when available;
- channel name matching against XMLTV
display-name.
If no data appears, verify that the XMLTV channel IDs or display names match the channel names from your playlist/provider.
TuxPlayerX supports XMLTV EPG sources. In Settings, add the XMLTV URL and choose the EPG time mode:
- Auto / XMLTV timezone: reads XMLTV timezone offsets and displays programme times in the local system timezone.
- Treat EPG times as local time: ignores XMLTV offsets and treats programme times as local.
- Manual offset: applies a correction in minutes when a guide source is consistently shifted.
For example, use -60 if programmes appear one hour too late, or +60 if they appear one hour too early.







