Max Goodhart bee4a33fd8 Overhaul view positioning to enable animated transitions
Views are now positioned inside the web contents so we can use CSS
transitions to animate them. Since the overlay renders in a different
process, I needed to move the border and listening glow into the web
contents so that they'd move in sync.
2026-02-02 01:51:37 -08:00
2025-02-22 15:49:36 -08:00
2020-06-14 23:28:45 -07:00
2025-02-22 15:49:36 -08:00
2020-06-24 17:54:47 -07:00
2025-02-22 15:49:36 -08:00
2026-01-31 17:52:29 -08:00
2025-02-22 15:49:36 -08:00
2025-02-22 15:49:36 -08:00

Streamwall

🚧 Streamwall v2.0 is a work-in-progress 🚧

Goals for the v2 branch:

  • TypeScript
  • Use Electron Forge to distribute packaged releases
  • Split out control server; refactor for local-only use without a webserver

Streamwall makes it easy to compose multiple livestreams into a mosaic, with source attributions and audio control.

How it works

Under the hood, think of Streamwall as a specialized web browser for mosaicing video streams. It uses Electron to create a grid of web browser views, loading the specified webpages into them. Once the page loads, Streamwall finds the <video> tag and reformats the page so that the video fills the space. This works for a wide variety of web pages without specialized scrapers.

Configuration

Streamwall has a growing number of configuration options. To get a summary run:

npm start -- --help

For long-term installations, it's recommended to put your options into a configuration file. To use a config file, run:

npm start -- --config="../streamwall.toml"

See example.config.toml for an example.

Data sources

Streamwall can load stream data from both JSON APIs and TOML files. Data sources can be specified in a config file (see example.config.toml for an example) or the command line:

npm start -- --data.json-url="https://your-site/api/streams.json" --data.toml-file="./streams.toml"

Hotkeys

The following hotkeys are available with the "control" webpage focused:

  • alt+[1...9]: Listen to the numbered stream
  • alt+shift+[1...9]: Toggle blur on the numbered stream
  • alt+s: Select the currently focused stream box to be swapped
  • alt+c: Activate Streamdelay censor mode
  • alt+shift+c: Deactivate Streamdelay censor mode
Languages
TypeScript 98.9%
HTML 1%