Heiervang Technologies fork of Vibe
HT Discussions | Fork Management Guide | Upstream: TornaxO7/vibe
This is the Heiervang Technologies fork of Vibe. The ht branch contains the following changes on top of upstream main:
Changelog (full changelog)
- 18 custom WGSL shaders — aurora, cluster, deep_sea, event_horizon, grass, liquid, mandelbrot_light, monolith, nebula, plasma, pokemon_grass, pokemon_grass_3d, singularity, solar_system, starfield, tesseract, vortex, waveform
- Click-to-interact Pokemon shader —
iMouseClick(vec4f, binding 8) andiLocalTime(binding 9) uniforms with GPU pixel readback for species identification. Writes click data to/tmp/vibe-clickand species to/tmp/vibe-click-species - BPM detection — Spectral flux + autocorrelation algorithm with median smoothing. Exposes
iBPMuniform (binding 4) to shaders and writes BPM to/tmp/vibe-bpmfor Waybar integration - 4-color palette system — Configurable via
~/.config/vibe/colors.tomlwith live file-watching reload. ExposesiColorsuniform (binding 5) with fallback defaults
- AMD GPU compatibility — Prefer Bgra8Unorm/Rgba8Unorm surface format
- Audio capture — Use input device (monitor source) instead of output device
- Shader load flash — Start normalize_factor low to prevent blinding flash on shader load
Utilities (utils/)
cycle-shader.sh— Cycle through shaders for any output/window config (next/prev/by-name)vibe-key-cycle.sh— Keybinding helper that cycles shaders on the focused vibe window (Hyprland, Sway, KDE)randomize-colors.sh— Randomize the 4-color palette (keybinding-friendly, multi-compositor)pokemon-click-cry.py— Click-triggered Pokemon cry daemon (watches/tmp/vibe-click-species)pokemon-cries-daemon.sh— Ambient random Pokemon cries every 60-180scluster-status-feeder.sh— Feeds live Kubernetes cluster metrics intocluster.wgslshader constants (configurable nodes)
- SHADER_WRITING.md — 1000+ line comprehensive WGSL shader development guide covering uniforms, audio reactivity, visual techniques, and performance optimization
- CONTRIBUTING.md — Fork management, branch conventions, and contribution guidelines
main— Clean mirror of upstreammain. Never commit directly.ht— Default branch with all HT-specific changes.
For questions or discussion, visit the HT Discussions page. See the Fork Management Guide for branch conventions and sync workflow.
vibe (to have a nice vibe with your music) is a desktop music visualizer inspired by glava and shadertoy for wayland!
Note: Your compositor must support the wlr-layer-shell protocol. See here
for a list of compositors on which vibe should be able to run.
You can click on the image below to see a live demo.
- support for (multiple) shadertoy-like-shaders (you can probably use most shaders from shadertoy, but you can't just simply copy+paste them)
- audio processing support for shaders
- wgsl and glsl support for shaders
- some predefined effects which you can choose from
It works on my machine and I've implemented basically everything I wanted and now I'm open for some feedback. For example in form of
- finding bugs
- suggestions or more ideas
- better user experience
Feel free to create an issue if you found a bug and/or an idea discussion if you'd like to suggest something. However I can't promise to work on every suggestion/bug :>
Note: I'm unsure if I'd declare the config file format(s) of vibe as "stable", so for the time being: Be prepared for breaking changes.
vibe won't work out of the box probably. Some steps are required.
See USAGE.md for more information.
See the Config wiki page.
- WayVes: OpenGL-based Visualiser Framework for Wayland
