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

11 effects15,500 crumble pieces34 shaders0 px identity diff2026localSystems & Hardware
About
A screen shader sees only the finished frame. To do this properly the window has to be captured alone, with transparency, and composited back in z-order. hyprdrip hooks the compositor's per-window render, captures the window's live pixels each frame, and redraws them through a stack of effects: ink running on wet paper, a structural collapse into slabs and glyphs, a water surface stirred by the pointer, an old phosphor tube, a sheet of cloth you can tear, a destructible pane with a toolbox, a video-only "cinema" crop that hides everything but the moving picture, letters that take off and flock around the desktop with the pointer as the hawk, letters that trade places inside their words, a typing courier, and an audio visualiser behind the text fed by a PipeWire tap.
The effects never take input. The identity contract is proven to the bit: at zero wetness every mode and every stack is exactly zero pixels different from the untouched window in the headless harness. Capture moved to the monitor's FP16 scRGB format so an HDR head is not clipped at 80 nits, and every shader knows where white is.
Domains
01Physics on a window
- Rigid slabs with a contact solver, settle decided by displacement
- Position-based cloth, 56×35 nodes, pins and tears
- Wave equation on a 208×131 grid, pointer wake, rain
02Reading the page
- Glyphs found by component labelling, minted by pangocairo when missing
- Boids with roaming targets so 3,000 letters have a body, not a gas
- Courier borrows letters from the page to spell what you type
03Proof
- Headless harness with synthetic terminal and browser assets
- Per-mode fingerprints; stacks compared against the base
- HDR invariance: the dissection is the same at white 1.375 as at 1
Key features
- 01Eleven effects behind one core interface with a prepare/render split; any subset stacks, bottom-first
- 02Crumble: connected-component dissection into ~15,500 slabs, glyphs and icons in 20 ms; 13,381 bodies simulated at 60 fps flat, 0.1 ms on the GPU
- 03Flock: 3,700 letters of a 4K terminal at 120 fps with 0.5 ms prepare; page read on a worker, never on the frame
- 04Cinema: finds the moving picture by motion plus relative detail — no site list — at 0.07 ms per frame, with a pointer shield so hidden furniture cannot be clicked
- 05Hifi: PipeWire audio tap, 86 bands, beat detector that hears the same 15 beats at 30, 60 and 120 fps
- 06Identity at wet 0 is exactly 0 pixels of difference for every mode and stack; fingerprint md5 recorded per mode
- 07FP16 scRGB capture on the HDR head; white plumbed into every shader so white = 1 is a bit-exact no-op
- 08The frame loop keeps itself alive: effects self-drive damage; stateful work only ever happens before the render pass
- 09Omarchy chooser rows answered by the plugin's own layer state; seven hyprctl round trips measured at 16 ms
- 10A 2,472-line DEVELOPING.md with a "traps that have already bitten" chapter per mode
Gallery
recording · still




Nearby
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
2026local6 modes56 shaders
SHEET 02 · Systems & Hardware

Boiler Plant Telemetry
Boiler-plant telemetry over the Ayla IoT cloud — 390 parameters read from two binary properties, 216 writable — and a software outdoor-reset curve on two 2 MMBtu/h condensing boilers
2026local390 parameters216 writable
SHEET 03 · Systems & Hardware

WeatherNext Collector
Hourly Google DeepMind WeatherNext 3 ensemble runs for one grid cell at 10,700 ft — every run kept, verified against the on-site station once the hours pass, served to the public weather page and to the boiler reset curve
2026live22 s run fetch11 × 6 variables