r/frigate_nvr • u/Wonderful-One8824 • 13h ago
Frigate is headless, so I wrote the "monitor on the wall" part: XGView, a live camera wall for mini PCs, Android TV, tablets and phones
My old vendor NVR had an HDMI output wired to a monitor, on 24/7. You walk into the room and see every camera. Some of those cameras needed replacing, and neither the vendor's own replacements nor other brands would work with the old NVR, so I moved everything to Frigate (Intel N100 mini PC, minimal Debian, Docker). All cameras are in and recording.
What was missing was the screen. Frigate is headless, and its web UI is great for management but not for a wall display. So I wrote XGView: a viewer that pulls the streams and draws a live wall on the HDMI output. On the N100 it runs full screen on minimal Debian + a small window manager, starts at boot, and stays up like the old NVR did. I also run it on a tablet at another location, on a Shield TV, and on a phone.
To be clear, it's not a Frigate replacement. Frigate keeps doing recording, detection and storage. This is only the screen.
What matters for a Frigate setup:
- Frigate import: point it at your Frigate URL, log in, and it reads the API and pairs each camera's main/sub stream by measured resolution. It keeps both the RTSP restream and go2rtc's MSE address. AUTO tries RTSP first and falls back to MSE, so a camera stays watchable when RTSP isn't reachable from where the viewer sits.
- Light on resources: sub streams in the grid, main stream only on the zoomed tile (last sub frame is held until the first main keyframe). Pages you aren't looking at are suspended, sockets and decoders released.
- Hardware decoding via VAAPI on Intel, with an HW/SW badge per tile.
- Layouts: 1x1 to 4x4 plus mixed layouts, camera groups, configurable corner overlays.
- Remote-first: everything works with a TV remote's DPAD + BACK, so the Shield needs no keyboard. Touch-first on tablets and phones, portrait or landscape.
- Also imports from go2rtc, Synology Surveillance Station, ONVIF, or manual RTSP/MJPEG/MSE, if some cameras aren't in Frigate yet.
- Blackout schedule, keep-awake, start on boot with supervised restarts.
Runs on Android TV/phones/tablets (arm64, 8.1+), Windows, Linux and macOS. No account, no cloud, no telemetry. One JSON config file. MIT licensed.
On Linux without desktop installed it needs a display server and a window manager. For a headless-style box, I documented my exact N100 setup: minimal Debian 13 + Xorg + openbox, started by a systemd unit at boot, with Docker for Frigate on the same machine, plus a setup script if you'd rather not do it by hand: https://github.com/xhbl/xgview/blob/master/docs/DEBIAN-KIOSK.md
And very old Android boxes with only OpenGL ES 2.0 are refused rather than half-working.
I'm the author and this is a solo project. Feedback is very welcome, especially on:
- different hardware (mini PCs, Android TV devices, tablets)
- setups where you can only reach Frigate over HTTP (reverse proxy, no RTSP port exposed), since that's where the MSE fallback matters
- anything in the Frigate import that doesn't match your config
Note: This is a personal project, shared as-is, with no warranty. It was developed with AI
assistance under my direction and testing; please review the code before using it in sensitive setups.
Download: https://github.com/xhbl/xgview/releases/latest
(Android APK, Windows, Linux, macOS)
Source (MIT):



