Old Windows layers two CSS-driven effects over the entire desktop to simulate the look of a CRT monitor: a semi-transparent scanline grid and a subtle flicker animation. A third utility class,Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/old-windows/llms.txt
Use this file to discover all available pages before exploring further.
.blink, handles blinking text elements such as the welcome header and cursor indicators. All three live in assets/main.css and are applied by the Desktop component. Adjusting the intensity or disabling the effects entirely requires only a few CSS edits or the removal of two JSX lines.
The Two CRT Layers
.crt-overlay — Scanlines
The scanline layer is a fixed, full-viewport div that sits above every other element on the page. It uses a repeating CSS gradient to draw horizontal lines 2 px apart, mimicking the phosphor row structure of a CRT display.
#12101000) and a very faint black (#0000001a) every 2 px within a 4 px repeating tile. At opacity: 0.6 the effect is visible but not distracting. pointer-events: none ensures the overlay never intercepts clicks intended for windows or icons below it.
.crt-flicker — Screen Flicker
The flicker layer is a fixed, inset-zero white div that uses mix-blend-mode: overlay and starts at opacity: 0. A short looping animation pulses its opacity between 0.85 and 1, producing the subtle brightness variation of a CRT refresh cycle.
mix-blend-mode: overlay on the white element brightens the layers beneath it during the pulse without washing them out.
JSX in the Desktop Component
Both layers are rendered as siblingdiv elements near the top of the Desktop component’s return value:
The Blink Utility
The.blink class produces a hard on/off blink used for elements like the desktop welcome header and cursor characters. Unlike the smooth opacity easing of .crt-flicker, this blink cuts abruptly between fully visible and fully hidden every half-second:
Adjusting the Effects
Change scanline intensity
Edit theopacity value on .crt-overlay in assets/main.css. Lower values reduce the visibility of the scanlines; set it to 0 to disable the effect while keeping the element in the DOM:
Change scanline density
Edit thebackground-size property. A smaller tile height increases scanline density; a larger one spreads them out:
Change flicker speed
Edit the duration in the.crt-flicker animation declaration. A longer duration makes each cycle more perceptible; a shorter one blends into imperceptibility:
Disable CRT effects entirely
Remove or comment out the two CRTdiv elements in Desktop.js:
.blink class is independent and will continue to work on any elements that use it.
The
.crt-overlay is positioned at z-index: 9999 — the same layer as the taskbar in many configurations. Because it has pointer-events: none, it never blocks interaction with elements beneath it. If you add elements with a z-index above 9999, they will render above the scanline overlay and appear unfiltered.