univ-of-utah-marriott-library-apple / display_manager

An open-source Python library which can modify your Mac's display settings manually or automatically.
MIT License
237 stars 18 forks source link

Cannot change the brightness of main display #26

Open WrathOP opened 1 year ago

WrathOP commented 1 year ago
def setBrightness(self, brightness):
    """
    :param brightness: The desired brightness, from 0 to 1.
    """
    error = iokit["IODisplaySetFloatParameter"](self.__servicePort, 0, iokit["kDisplayBrightness"], brightness)
    if error:
        if self.isMain:
            raise DisplayError("Cannot manage brightness on display \"{}\"".format(self.tag))
        else:
            raise DisplayError(
                "Display \"{}\"\'s brightness cannot be set.\n"
                "External displays may not be compatible with Display Manager. "
                "Try setting manually on device hardware.".format(self.tag))

I wanted to use this code for my project as I am unable to find a way to change the macos brightness from python and this library is one caught my eye but it clearly doesnt support changing main display brightness , or I am just understanding it wrong.

Alexandro1112 commented 1 year ago

I have the solution, setBrightness also doesn't work on macOS 13.0 Ventura, I can propose using this code for setup screen brightness, function IKMonitorBrightnessController, bellow script:

from Quartz import IKMonitorBrightnessController

def setBrightness(level: float):
    success = IKMonitorBrightnessController.alloc().setBrightnessOnAllDisplays_(level)
    if not success is None:
        raise ValueError()

setBrightness(0.5)

However, this script set brightness for all displays, but I count it is alternative solution