From 590250dca2f3e95761c847573d5b728cf888f210 Mon Sep 17 00:00:00 2001 From: Kalmat Date: Fri, 16 Jun 2023 14:04:46 +0200 Subject: [PATCH] New approach based on Monitor() class to access all properties and functionalities. macOS is still experimental and not tested on multi-monitor setups. --- dist/PyMonCtl-0.0.9-py3-none-any.whl | Bin 150483 -> 150488 bytes src/pymonctl/__init__.py | 8 ++++---- src/pymonctl/_pymonctl_linux.py | 8 ++++---- src/pymonctl/_pymonctl_macos.py | 8 ++++---- src/pymonctl/_pymonctl_win.py | 8 ++++---- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dist/PyMonCtl-0.0.9-py3-none-any.whl b/dist/PyMonCtl-0.0.9-py3-none-any.whl index 6694f5866e99b137c922e94bd1f3ea3a27fdd7af..652a156e261cca7b74118c877c657e922e60c8f9 100644 GIT binary patch delta 21130 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 Optional[Union[int, Orientation]]: raise NotImplementedError @abstractmethod - def setOrientation(self, orientation: Orientation): + def setOrientation(self, orientation: Optional[Union[int, Orientation]]): """ Change orientation for the monitor identified by name (or primary if empty) @@ -350,7 +350,7 @@ def brightness(self) -> Optional[int]: raise NotImplementedError @abstractmethod - def setBrightness(self, brightness): + def setBrightness(self, brightness: Optional[int]): """ Change the brightness of monitor. The input parameter must be defined as a percentage (0-100) """ @@ -369,7 +369,7 @@ def contrast(self) -> Optional[int]: raise NotImplementedError @abstractmethod - def setContrast(self, contrast: int): + def setContrast(self, contrast: Optional[int]): """ Change the contrast of monitor. The input parameter must be defined as a percentage (0-100) @@ -390,7 +390,7 @@ def mode(self) -> Optional[DisplayMode]: raise NotImplementedError @abstractmethod - def setMode(self, mode: DisplayMode): + def setMode(self, mode: Optional[DisplayMode]): """ Change current monitor mode (resolution and/or refresh-rate) for the monitor diff --git a/src/pymonctl/_pymonctl_linux.py b/src/pymonctl/_pymonctl_linux.py index e6d19b5..71182a1 100644 --- a/src/pymonctl/_pymonctl_linux.py +++ b/src/pymonctl/_pymonctl_linux.py @@ -278,7 +278,7 @@ def orientation(self) -> Optional[Union[int, Orientation]]: return rot return None - def setOrientation(self, orientation: Orientation): + def setOrientation(self, orientation: Optional[Union[int, Orientation]]): if orientation in (NORMAL, INVERTED, LEFT, RIGHT): outputs = _XgetAllOutputs(self.name) for outputData in outputs: @@ -359,7 +359,7 @@ def brightness(self) -> Optional[int]: # '--method org.freedesktop.DBus.Properties.Get org.gnome.SettingsDaemon.Power.Screen ' # 'Brightness') - def setBrightness(self, brightness: int): + def setBrightness(self, brightness: Optional[int]): # https://unix.stackexchange.com/questions/150816/how-can-i-lazily-read-output-from-xrandr if brightness is not None: value = brightness / 100 @@ -380,7 +380,7 @@ def contrast(self) -> Optional[int]: value = int(((1 / (float(r) or 1)) + (1 / (float(g) or 1)) + (1 / (float(b) or 1))) / 3) * 100 return value - def setContrast(self, contrast: int): + def setContrast(self, contrast: Optional[int]): if contrast is not None: value = contrast / 100 if 0 <= value <= 1: @@ -408,7 +408,7 @@ def mode(self) -> Optional[DisplayMode]: pass return value - def setMode(self, mode: DisplayMode): + def setMode(self, mode: Optional[DisplayMode]): # https://stackoverflow.com/questions/12706631/x11-change-resolution-and-make-window-fullscreen # Xlib.ext.randr.set_screen_size(defaultRootWindow.root, mode.width, mode.height, 0, 0) # Xlib.ext.randr.set_screen_config(defaultRootWindow.root, size_id, 0, 0, round(mode.frequency), 0) diff --git a/src/pymonctl/_pymonctl_macos.py b/src/pymonctl/_pymonctl_macos.py index 437c4e4..bbd712f 100644 --- a/src/pymonctl/_pymonctl_macos.py +++ b/src/pymonctl/_pymonctl_macos.py @@ -305,7 +305,7 @@ def orientation(self) -> Optional[Union[int, Orientation]]: return orientation return None - def setOrientation(self, orientation: Union[int, Orientation]): + def setOrientation(self, orientation: Optional[Union[int, Orientation]]): # display = self._dm.Display(self.handle) # if orientation in (NORMAL, INVERTED, LEFT, RIGHT): # display.setRotate(orientation * 90) @@ -334,7 +334,7 @@ def brightness(self) -> Optional[int]: # value = int(float(ret)) * 100 # return value - def setBrightness(self, brightness: int): + def setBrightness(self, brightness: Optional[int]): # display = self._dm.Display(self.handle) # try: # display.setBrightness(brightness) @@ -354,7 +354,7 @@ def contrast(self) -> Optional[int]: # raise NotImplementedError return None - def setContrast(self, contrast: int): + def setContrast(self, contrast: Optional[int]): # Decrease display contrast: Command+Option+Control- # Increase display contrast: Command+Option+Control+ # raise NotImplementedError @@ -369,7 +369,7 @@ def mode(self) -> Optional[DisplayMode]: res = DisplayMode(w, h, r) return res - def setMode(self, mode: DisplayMode): + def setMode(self, mode: Optional[DisplayMode]): # https://stackoverflow.com/questions/10596489/programmatically-change-resolution-os-x if mode is not None: allModes = Quartz.CGDisplayCopyAllDisplayModes(self.handle, None) diff --git a/src/pymonctl/_pymonctl_win.py b/src/pymonctl/_pymonctl_win.py index 132c250..67e66b5 100644 --- a/src/pymonctl/_pymonctl_win.py +++ b/src/pymonctl/_pymonctl_win.py @@ -221,7 +221,7 @@ def orientation(self) -> Optional[Union[int, Orientation]]: return settings.DisplayOrientation return None - def setOrientation(self, orientation: Orientation): + def setOrientation(self, orientation: Optional[Union[int, Orientation]]): if orientation in (NORMAL, INVERTED, LEFT, RIGHT): devmode = pywintypes.DEVMODEType() # type: ignore[attr-defined] devmode.DisplayOrientation = orientation @@ -257,7 +257,7 @@ def brightness(self) -> Optional[int]: return normBrightness return None - def setBrightness(self, brightness: int): + def setBrightness(self, brightness: Optional[int]): if brightness is not None: minBright = ctypes.c_uint() currBright = ctypes.c_uint() @@ -288,7 +288,7 @@ def contrast(self) -> Optional[int]: return normContrast return None - def setContrast(self, contrast: int): + def setContrast(self, contrast: Optional[int]): if contrast is not None: minCont = ctypes.c_uint() currCont = ctypes.c_uint() @@ -307,7 +307,7 @@ def mode(self) -> Optional[DisplayMode]: winSettings = win32api.EnumDisplaySettings(self.name, win32con.ENUM_CURRENT_SETTINGS) return DisplayMode(winSettings.PelsWidth, winSettings.PelsHeight, winSettings.DisplayFrequency) - def setMode(self, mode: DisplayMode): + def setMode(self, mode: Optional[DisplayMode]): if DisplayMode: devmode = pywintypes.DEVMODEType() # type: ignore[attr-defined] devmode.PelsWidth = mode.width