SHEET 12 · Systems & Hardware
hyprfacet
A Hyprland compositor plugin that captures every workspace to its own framebuffer each frame and shows them as a navigable solid — a cube and four other modes, 56 inline GLSL shaders, 7 live faces at 4K/120 Hz

6 modes56 shaders120 Hz delivery78 commits2026localSystems & Hardware
About
Hyprland has no perspective camera; it composites flat. hyprfacet adds one. A function hook replaces the workspace render, captures each workspace on a monitor into an FP16 framebuffer, and a custom pass element draws them as a solid with its own vertex buffers, shaders and 4×4 model-view-projection: a cube, a "ration" strip, a Droste recursion, a concertina, and a second cube with bevels and reflections. Faces stay live, so video keeps playing on the side of the cube while you turn it. A non-modal Rail shows live thumbnails, and a goto command animates to any workspace by id.
The work is checked, not eyeballed. A headless EGL harness renders any mode over scripted timelines to PNG, and a verify script proves the fully-closed frame is byte-identical to the desktop across all five modes. Frame telemetry reports capture, mode and frame milliseconds with a verdict; four of five modes deliver 100% of frames at 3840×2160 and 120 Hz.
Domains
01Modes
- cube, ration, droste, concertina, cubev2; a hidden Grid for hyprstate
- Perspective on a compositor that has none
- Faces stay live: video, terminals, everything keeps drawing
02Correctness
- Byte-identical closed frame, proven across all five modes
- HDR faces captured in the work-buffer format, not clipped at 80 nits
- Frame-budget telemetry with a verdict, not a feeling
03Control
- Ten dispatchers mirrored as Lua functions for hyprctl eval
- Quickshell mode switcher that previews a mode live before committing
- Keyboard, pointer drag and wheel; Wayland has no key repeat, so spin runs on elapsed time
Key features
- 01Six display modes behind one interface; a new mode is two files and two registry lines
- 02Every workspace captured to its own FP16 scRGB framebuffer per frame; faces keep receiving frame events so video keeps playing
- 03Own VBO, 56 inline GLSL shader sources, own MVP; convex solids sorted back to front with no depth buffer
- 04Open and close on a smoothstep timeline that reaches exactly 0 with zero velocity — no snap at the handoff
- 05Mirror resolve so a screenshot of an open session round-trips to the desktop's exact bytes on an HDR output
- 06Non-modal Rail of live thumbnails; goto/jump by workspace id; carry the active window one face over
- 07Headless EGL harness renders any mode over scripted timelines; 2,500-frame byte-deterministic baseline
- 08Stats command: capture/mode/frame ms with a keeping-up verdict; 100% delivery at 4K/120 Hz in four of five modes
- 09Rebuild script that refuses to build against an SDK whose header hash does not match the running compositor
Gallery
recording · still




Nearby
SHEET 13 · Systems & Hardware

hyprdrip
Eleven stackable per-window render effects for Hyprland — a window dissected into 15,500 pieces in 20 ms and collapsed at 60 fps, water, a CRT, cloth, flocking letters — with the window underneath still typeable
2026local11 effects15,500 crumble pieces
SHEET 15 · Systems & Hardware

hyprstate
Every repo becomes its own Hyprland workspace band with a live dashboard hub — one Node server, one Python CLI, one Lua file, a Quickshell rail; 494 headless tests, 7 States and 38 workspaces proven at 120 Hz
2026local494/494 tests7 states live
SHEET 11 · Systems & Hardware

hyprrad
My Linux desktop streamed into a Tesla's browser — headless 1920×1084 output, NVENC HEVC at 1–1.8 Mbps, WebCodecs decode in the car, touch and keys injected back over the same socket
2026local1–1.8 mbps bitrate18 car sessions