Disable macOS temporal dithering from a single Python script, without installing an app or any third-party dependency.
This project is a script port of the core behavior from Stillcolor, a lightweight macOS menu bar app that disables GPU/DCP-generated temporal dithering on Apple silicon Macs. The goal of this version is simple: make the same low-level setting available in environments where installing a separate app is not allowed, but running a plain script is.
stillcolor.py uses native macOS IOKit and CoreFoundation APIs through Python's
standard-library ctypes module. It does not use pip, Homebrew, SwiftPM, Xcode,
or a bundled application.
The script:
- Finds display driver services matching
IOMobileFramebufferAP. - Detects embedded and external displays through the IORegistry
externalproperty. - Sets
enableDither = Noto disable temporal dithering. - Sets
enableDither = Yesto re-enable temporal dithering. - Optionally sets
uniformity2D = Noon embedded displays, matching Stillcolor's experimental uniformity control.
- Apple silicon Mac.
- macOS 13 or newer.
- The built-in system Python at
/usr/bin/python3.
This is not expected to work on Intel Macs, because they may not expose the same
IOMobileFramebufferAP display services.
Clone or download this repository, then run:
/usr/bin/python3 stillcolor.py statusDisable temporal dithering:
/usr/bin/python3 stillcolor.py disableVerify with:
ioreg -lw0 | grep -i enableDitherWhen disabled, you should see one or more enableDither values set to No.
Show current display properties:
/usr/bin/python3 stillcolor.py statusDisable temporal dithering:
/usr/bin/python3 stillcolor.py disableRe-enable temporal dithering:
/usr/bin/python3 stillcolor.py enablePreview what would change without writing anything:
/usr/bin/python3 stillcolor.py --dry-run disableDisable temporal dithering only on the built-in display:
/usr/bin/python3 stillcolor.py disable --target embeddedDisable temporal dithering only on external displays:
/usr/bin/python3 stillcolor.py disable --target externalDisable temporal dithering and also disable uniformity2D on embedded displays:
/usr/bin/python3 stillcolor.py disable --uniformity2dUse explicit values:
/usr/bin/python3 stillcolor.py set --dither off
/usr/bin/python3 stillcolor.py set --dither on
/usr/bin/python3 stillcolor.py set --uniformity2d offKeep applying the setting while the script is running:
/usr/bin/python3 stillcolor.py watchStop watch mode with Ctrl-C.
macOS resets enableDither after restart. Run the disable command again after
reboot, or use an approved login/startup mechanism in your environment to run:
/usr/bin/python3 /path/to/stillcolor.py disableWatch mode can also help after reconnecting displays:
/usr/bin/python3 /path/to/stillcolor.py watchThis script writes runtime IORegistry properties used by the display pipeline. It does not patch system files, install kernel extensions, install a launch agent, or persist changes across reboot.
Still, this is a low-level display control. Use it at your own risk, especially on managed company devices. If the result is not what you want, run:
/usr/bin/python3 stillcolor.py enableor restart macOS.
This is an independent script version inspired by aiaf/Stillcolor. Stillcolor provides the original menu bar app experience, launch-at-login integration, and the initial public discovery of these display properties.
If you are allowed to install apps and want a menu bar UI, use the original Stillcolor app. If you need a plain script with no third-party dependencies, this project is intended for that case.
This project is released under the MIT License.
Stillcolor itself is MIT licensed by Abdullah Arif. See NOTICE for upstream attribution.