Skip to content

Disable temporal dithering on your Mac with this lightweight menu bar app. Designed for Apple silicon Macs.

License

Notifications You must be signed in to change notification settings

slava-konashkov/Stillcolor

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stillcolor for macOS

Save your eyesight and disable temporal dithering on your Mac with Stillcolor, a lightweight menu bar app for macOS running on Apple M1/M2/M3.

Why?

Heaps of people are sensitive to certain properties of modern displays such as blue light, PWM, and temporal dithering (FRC) which alternates pixel colors at the speed of your display's refresh rate, tricking your eyes into perceiving a wider range of colors than the display can actually produce.

These sensitivities manifest as eyestrain and fatigue, dry eyes, headache, nausea, inability to focus, and other physical symptoms.

There's even a petition urging Apple to make use of these technologies known and to implement accessbility options.

While there are apps and accessories to help dim blue light, and plenty of flicker-free monitors, temporal dithering can happen at the GPU level with no visible option to disable it (such as the case in Apple silicon Macs).

Stillcolor allows you to disable GPU/DCP-generated temporal dithering from user space, helping massively reduce eyestrain with little to no degradation in image quality.

Caveats

Note that while Stillcolor is 100% confirmed to remove GPU/DCP-generated temporal dithering, which is applied directly to the pixel framebuffer right before it's sent to the external/embedded display, the display panel's timing contoller (TCON) may still apply its own dithering/FRC to achieve advertised color bit depth. Whether or not Apple displays actively use TCON dithering in addition to DCP/GPU dithering is under investigation.

Story and write-up

Thread on LEDStrain

Stillcolor in action

See this timeblend video of how your screen looks like with temporal dithering vs without:

https://www.youtube.com/watch?v=D9AZqJH-U-U

Requirements

  • Apple silicon Mac e.g. M1/M2/M3
  • macOS >= 13

Installation

Head over to Releases and download the latest zip.

Unzip Stillcolor.app to your Applications folder and launch.

Select “Launch a login” to make this app run automatically and disable dithering whenever your computer starts.

Verifying status of temporal dithering

To check wether the app did the job, run the following in Terminal:

ioreg -lw0 | grep -i enableDither

Should see 1 or more ”enableDither” = No corresponding to each live or past display.

To re-enable dithering simply uncheck “Disable Dithering.”

enableDither is reset back to Yes on computer restart that's why you need to launch this app on login.

To verify that your GPU is not applying dithering you can try a visual test by visiting Lagom LCD Gradient (banding) test

Set your built-in display’s color profile to sRGB at full brightness and look carefully at the gray parts, you should be able to see subtle banding when you disable dithering which happens in realtime.

And if you're sensitive to temporal dithering you should notice a lot less eyestrain while dithering is disabled.

A more complicated approach is to use a video capture card and record your display's uncompressed output then run the recording through ffmpeg to visualize dithering with something like the following command:

ffmpeg -i input.mov -sws_flags full_chroma_int+bitexact+accurate_rnd -vf "format=gbrp,tblend=all_mode=grainextract,eq=contrast=-60" -c:v v210 -pix_fmt yuv422p10le diff.mov

Roadmap

  • Make this app compatible macOS 11+
  • Create a foolproof and easy dithering test
  • Intel Macs?
  • iOS?

About

Disable temporal dithering on your Mac with this lightweight menu bar app. Designed for Apple silicon Macs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%