Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

stremio-native

Native Wayland Stremio client for Linux. Built with Rust + iced. No Electron, no Chromium, no Qt.


Screenshots

Home screen with hero banner and catalog rails

Detail view with episode picker and stream list

Player picker overlay


Features

Home

  • Hero banner with backdrop image, title, rating, and synopsis — rotates every 7 seconds
  • Continue Watching rail synced with your Stremio cloud library
  • Horizontal catalog rails from all your installed addons (Popular, Netflix, Trakt, etc.)
  • Responsive poster grid that adapts to window width

Streams

  • Streams fetched from all your installed addons in parallel — first results appear immediately as each addon responds
  • Debrid streams sorted first with a green "Cached" badge (Real-Debrid, AllDebrid, etc.)
  • Addon filter pills — click any provider name to show only its streams
  • Text search — type anything to filter by quality, codec, file size, or source (e.g. "1080p", "x265", "RARBG")
  • Quality color coding: 4K in gold, 1080p in blue
  • File size and source shown on each row

Detail view

  • Full backdrop image + logo overlay
  • Episode picker with season tabs, thumbnails, and synopses
  • Stream list opens inline beneath the selected episode (accordion style)

Player

  • Player picker on every stream — choose mpv or any detected player (VLC, Celluloid, Haruna, etc.)
  • mpv compatible profile: hardware decode (configurable — VA-API, NVDEC, CUDA, or auto), in-app transport controls
  • mpv your-config profile: respects your ~/.config/mpv/mpv.conf — custom shaders, scripts, keybindings
  • In-app controls: play/pause, seek ±10s, scrubber, volume

Library & account

  • Full library screen with filter by All / Movies / Series / In Progress
  • Continue Watching with progress bars, synced with the Stremio cloud
  • Account login — addon collection and library fetched automatically on startup

Why

The official Stremio desktop app embeds a full Chromium engine in a Qt5 shell.

stremio-native Official (Flatpak) Stremio Enhanced (Electron)
Install size ~18 MB binary 4.1 GB 120 MB AppImage
Runtime deps libssl, libc, libz Qt5 + Chromium Chromium + Node.js
Wayland (Arch) Works Broken Works via XWayland
Startup time ~0.3 s 3–6 s 3–6 s

The Qt5-WebEngine approach also means the official app is broken on modern Arch Linux — Qt5 WebEngine was deprecated, and the official shell hasn't kept up. This is a ground-up replacement: all rendering via wgpu (Vulkan), all network calls in Rust, video via mpv subprocess.


Requirements

Build

Dependency Ubuntu / Debian Fedora Arch
Rust 1.65+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh same pacman -S rustup
C compiler sudo apt install build-essential sudo dnf install gcc included in base-devel
OpenSSL headers sudo apt install libssl-dev pkg-config sudo dnf install openssl-devel pkgconf already installed

Runtime

Dependency Purpose Install
mpv Video playback pacman -S mpv / apt install mpv
Vulkan driver GPU rendering (wgpu) Mesa (vulkan-intel / vulkan-radeon) or NVIDIA ≥ 470
Node.js Run stremio-server pacman -S nodejs / apt install nodejs — only needed for raw torrent streams

Build and run

git clone https://github.com/knightinfected/stremio-native
cd stremio-native
cargo build --release
./target/release/stremio-native

Always build with --release. Debug builds are too slow for image loading.


stremio-server (torrent proxy)

stremio-server proxies raw torrent streams as HTTP so mpv can play them.

If you use Real-Debrid, AllDebrid, or any debrid service you don't need this — debrid streams are direct HTTPS URLs that mpv plays without a proxy.

On first launch, if no local server.js is found, the app automatically downloads it (~6.6 MB) from Stremio's CDN into ~/.config/stremio-native/server.js. Node.js must be installed.

To use a specific path:

# ~/.config/stremio-native/config.toml
[server]
path = "/path/to/server.js"

Configuration

Config is created at ~/.config/stremio-native/config.toml on first run.

[player]
# Hardware decode method for the mpv compatible profile.
# Options: "auto" | "vaapi" | "nvdec" | "cuda" | "vdpau" | "none"
# Configurable in Settings without editing this file.
hwdec = "auto"
default_volume = 100.0

[server]
# path = "/opt/stremio/server.js"   # override auto-detect

[auth]
# Set automatically after login
auth_key = "..."
user_email = "..."

Known limitations

  • Two-window playback: video opens in a separate mpv window. Embedding requires Wayland subsurface protocol work that is deferred.
  • X11: not tested. XWayland may work but is unsupported.
  • Stalled torrents: no timeout — click Back and pick a different stream.
  • Slow scrolling on Hyprland: set input { scroll_factor } in your Hyprland config.

Architecture

src/
  main.rs              starts stremio-server, then iced
  server.rs            stremio-server subprocess (auto-download + lifecycle)
  config.rs            Config struct, TOML serialization
  progress.rs          local playback progress (JSON), Continue Watching
  api/
    client.rs          StremioClient: catalog, meta, streams, auth, library
    types.rs           serde structs for all API responses
  player/
    mpv.rs             MpvPlayer subprocess + JSON IPC socket
    external.rs        player catalogue (VLC, Celluloid, etc.) + detection
    embedded.rs        libmpv SW render (unused, kept for future)
  ui/
    app.rs             App state, Message enum, update(), view(), subscription()
    theme.rs           colour palette, widget style functions
    components/
      navbar.rs        top navigation bar + account popup
      poster.rs        poster_card(), poster_card_continue()
    views/
      home.rs          hero banner + horizontal catalog rails
      detail.rs        backdrop, episode picker, stream list
      library.rs       full watch history grid
      browse.rs        full-page grid for "See All"
      player.rs        mpv transport controls overlay
      player_picker.rs player selection panel
      settings.rs      settings + account section
      login.rs         email / password form

License

MIT — see LICENSE.

This project is not affiliated with Stremio or Smart Code Ltd.

About

Native Wayland Stremio client for Linux — Rust + iced, no Electron

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages