Skip to content

kiteretsu903/stillcolor-python-script

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stillcolor Python Script

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.

What It Does

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 external property.
  • Sets enableDither = No to disable temporal dithering.
  • Sets enableDither = Yes to re-enable temporal dithering.
  • Optionally sets uniformity2D = No on embedded displays, matching Stillcolor's experimental uniformity control.

Requirements

  • 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.

Quick Start

Clone or download this repository, then run:

/usr/bin/python3 stillcolor.py status

Disable temporal dithering:

/usr/bin/python3 stillcolor.py disable

Verify with:

ioreg -lw0 | grep -i enableDither

When disabled, you should see one or more enableDither values set to No.

Commands

Show current display properties:

/usr/bin/python3 stillcolor.py status

Disable temporal dithering:

/usr/bin/python3 stillcolor.py disable

Re-enable temporal dithering:

/usr/bin/python3 stillcolor.py enable

Preview what would change without writing anything:

/usr/bin/python3 stillcolor.py --dry-run disable

Disable temporal dithering only on the built-in display:

/usr/bin/python3 stillcolor.py disable --target embedded

Disable temporal dithering only on external displays:

/usr/bin/python3 stillcolor.py disable --target external

Disable temporal dithering and also disable uniformity2D on embedded displays:

/usr/bin/python3 stillcolor.py disable --uniformity2d

Use 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 off

Keep applying the setting while the script is running:

/usr/bin/python3 stillcolor.py watch

Stop watch mode with Ctrl-C.

Persistence

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 disable

Watch mode can also help after reconnecting displays:

/usr/bin/python3 /path/to/stillcolor.py watch

Safety Notes

This 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 enable

or restart macOS.

Relationship To Stillcolor

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.

License

This project is released under the MIT License.

Stillcolor itself is MIT licensed by Abdullah Arif. See NOTICE for upstream attribution.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages