- HTML 81.6%
- JavaScript 12.8%
- Shell 5.6%
| assets | ||
| electron | ||
| install.sh | ||
| open-streaming.html | ||
| README.md | ||
Open Streaming
A customizable, full-screen web launcher for your favorite streaming platforms. Presents a clean grid interface where you can organize, launch, and manage services like Netflix, Hulu, YouTube, Plex, Emby, Jellyfin, Romm, and more.
A demo is available here: https://benpruyne.com/open-streaming.html
Installation
Option 1: AppImage (Recommended)
The easiest way to get started. No Node.js or dependencies required — everything is bundled.
Download the latest AppImage from the Releases page, or run the install script which handles everything automatically:
curl -s https://raw.githubusercontent.com/optimuspryne/open-streaming/main/install.sh -o /tmp/install.sh && bash /tmp/install.sh
This will download the AppImage, set up the icon, and create a desktop launcher entry.
Option 2: Snap
Available from the Releases page.
sudo snap install --dangerous open-streaming-electron_1.0.0_amd64.snap
Option 3: Run from Source
Requires Node.js and npm.
git clone https://github.com/optimuspryne/open-streaming.git
cd open-streaming
npm install
npm start
Option 4: Host the HTML Yourself
Requires a Web Server (Reverse Proxy & SSL Certs optional but highly recommended)
The Electron app is a nice convenience, but a similar result can be accomplished by hosting the HTML and the assets on a webserver (Or just locally on the machine) and setting up your HTPC to launch a web browser in Fullscreen/Kiosk mode at logon, and then set the 'homepage' on the browser to the location of the HTML.
open-streaming/
├── open-streaming.html # Main launcher HTML file
└── assets/ # Local service images
├── smalllogo.png
├── finallogo.png
├── emby.png
├── jellyfin.png
├── romm.png
└── ...
Keyboard Shortcuts
| Key | Action |
|---|---|
| F1 | Go home (back to launcher) |
| F11 | Toggle fullscreen |
| Alt + Left | Go back one page |
| Arrow keys | Navigate between services |
| Enter | Open selected service |
HTPC Setup (Linux)
This is how the app is intended to be used — as a fullscreen launcher on a dedicated HTPC that boots straight into Open Streaming.
Remote Control
A wireless remote/keyboard combo is recommended. The Rii Mini i25 works well as it supports both keyboard input and mouse cursor emulation. Most big streaming sites do not respond well to arrow key navigation alone, so a remote that can emulate a mouse cursor is important for actually using the services once you launch them.
Electron App Setup
The recommended setup uses the Electron-based app which handles fullscreen, navigation, and local service compatibility (Emby, Jellyfin, Romm, etc.) out of the box.
- Run the install script or follow the manual steps in Option 3 above.
- The app launches fullscreen automatically.
- Use F1 or your remote's home button to return to the launcher from any service.
Home Button (Rii / Media Remotes)
On KDE Wayland, media keys like the home button are handled at the OS level. To map your remote's home button to return to the launcher:
- Open System Settings > Shortcuts > Custom Shortcuts
- Create a new Global Shortcut > Command/URL
- Set the trigger to your home button
- Set the action to launch the app
How To Use The Launcher
- Click the + tile at the end of the grid to open the Add Service dialog.
- Use the Popular tab to pick from a list of known streaming services.
- Use the Custom tab to add any service manually — useful for locally hosted services like Jellyfin, Emby, or Romm.
- For self-hosted services, you will be prompted to enter your server URL (e.g.
http://192.168.1.100:8096for Emby). - Use drag-and-drop to reorder services.
- Click the x button on any tile to remove it.
- Click the H button on any tile to hide it without deleting it — it will be greyed out and unlaunchable until shown again.
- Use the Export / Import buttons to back up or restore your layout as a JSON file.
Tip: For any other service, paste a full image URL from a site like SteamGridDB. Portrait ratio images (2:3) work best with the Card tile style.
Appearance
The top bar contains all layout controls:
- Size — adjusts the tile size via a slider
- Style — switches between Landscape (4:3) and Card (portrait 2:3) tile styles
- Theme — 16 themes based on the Flame dashboard palette, shown with color swatches
- Export / Import — back up or restore your layout The clock and date are displayed on the right side of the top bar.
Gamepad Support
Controllers are supported via the Gamepad API — no extra drivers needed.
| Input | Action |
|---|---|
| D-pad / Left stick | Navigate the grid |
| A / Cross | Launch selected service |
| B / Circle | Go back |
| LB + RB | Go home |
Nav Bar
A persistent nav bar appears at the bottom of the screen when you move your mouse near the bottom edge. It works on all sites including those with strict security policies (Apple TV+, Spotify, YouTube Music).
| Button | Action |
|---|---|
| Back | Go back one page |
| Home | Return to the launcher |
| Fullscreen | Toggle fullscreen |
| Exit | Close the app |
Compatibility
- Tested on CachyOS and EndeavourOS with KDE Plasma on Wayland
- Should work on any Linux distro with Electron
- Windows is technically supported but not recommended