Native 360° video player for the COSMIC desktop, written in Rust.
Kjerag plays Insta360 .insv files directly: open the file straight off
the camera and press play. Zero configuration.
- Drag to reframe, scroll to zoom
- Gyro horizon lock
- Blended lens seam
- Screenshots
- Copyable view references
- Zero-copy hardware decode
Install Kjerag in COSMIC Store, GNOME Software or Discover. One click, and updates arrive with everything else.
Or two lines in a terminal:
flatpak remote-add --if-not-exists kjerag https://kjerag.harding.dev/kjerag.flatpakrepo
flatpak install kjerag dev.harding.KjeragEvery build is GPG signed. Single-file bundles, for a machine that should not carry a remote, are attached to each release.
Beta.
| Camera | Support |
|---|---|
| Insta360 X4 Air | ✅ Fully Supported |
| Insta360 ONE X2 | ✅ Fully Supported |
| Insta360 X3, X4, X5 | |
| DJI, GoPro | ❌ Not supported |
Have a camera that is unverified or missing? Open an issue with a short raw clip straight off the camera.
Releases carry an x86_64 and an aarch64 build. The aarch64 one is compiled and unit tested in CI and has never been run on aarch64 hardware; reports are welcome in the same place.
See docs/ROADMAP.md for where things stand and docs/ARCHITECTURE.md for how it works.
Insta360 Studio has no Linux build, and nothing on Linux plays raw .insv
with calibrated reframing: VLC only handles pre-stitched equirectangular,
and mpv shader hacks have no lens calibration, seam blending, or horizon
lock. The gap is real; this fills it.
An X4-class .insv is an MP4 carrying two 3840×3840 HEVC streams (one per
lens) plus a metadata trailer with full per-lens calibration (Mei/UCM
model), raw gyro, and per-frame exposure. Kjerag decodes both streams via
VA-API, imports the frames into wgpu zero-copy (dmabuf), and renders the
reframed view in a single shader pass. Measured on an AMD Phoenix iGPU:
dual-stream decode runs 2.4× realtime at 17% CPU.
AGPL-3.0. GPL-3.0 code from Gyroflow may be used where it helps (GPL-3.0 is one-way compatible with AGPL-3.0), and any file that takes it carries its own SPDX header. None does today: the projection math is written from the published Mei/OpenCV-omnidir description of the model.
