- HTML 86.5%
- JavaScript 10.7%
- Shell 2.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| assets | ||
| electron | ||
| install.sh | ||
| open-streaming.html | ||
| README.md | ||
| services.json | ||
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://git.benpruyne.com/ben/Open-Streaming/raw/branch/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: Windows EXE
Available from the Releases page.
Download and run the .exe file on your Windows PC.
Option 4: Run from Source
Requires Node.js and npm.
git clone https://git.benpruyne.com/ben/Open-Streaming.git
cd open-streaming
npm install
npm start
Option 5: 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).Tip: For any other service, paste a full image URL from a site like SteamGridDB. Portrait ratio images (9:16) work best.
- Use drag-and-drop to reorder services.
- Click the 'x' button on any tile to remove it.
- Click the '✎' button on any tile to change various settings.
- Click the '⧉' button on any tile to duplicate it.
- Click the 'T' button on any tile to edit the label text.
- Use the Export/Import buttons to back up your layout as a JSON file or restore your layout from a previous backup.
- Click on 'More Settings' to change following:
- Set a custom background color or image.
- Set an app-wide font.
- Show/Hide the tile labels.
Appearance
The top bar contains all layout controls:
- Card Size - adjusts the tile size via a slider
- Card Style - switches between Landscape (16:9) and Portrait (9:16) tile styles
- Theme - 16 themes based on the Flame dashboard palette, shown with color swatches. You can also create custom themes
- Export / Import - Backup or restore your layout
- More Settings - Can change background to a custom color or image, can change font type, and can show/hide the service name text on all cards.
- The current time and date are displayed on the top right.
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). Nav-bar also displays current top at the far right.
| 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