From 4daf0ee4e6d1bcde0cd38cfafcea6ab780fbd300 Mon Sep 17 00:00:00 2001 From: SpoopyTim <tim@horizonapp.net> Date: Tue, 27 Feb 2024 13:08:16 +0000 Subject: [PATCH] Version 1.2.0 Release --- CHANGELOG.md | 6 ++++++ pyproject.toml | 2 +- src/strandr/strandr.py | 13 +++++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cdb38c..03916e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), * None +## [1.2.0] - 2024-02-27 + +### Added + +- Refresh rate config + ## [1.1.0] - 2024-02-27 ### Added diff --git a/pyproject.toml b/pyproject.toml index 878e221..4f4a783 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "strandr" -version = "1.1.0" +version = "1.2.0" readme = "README.md" authors = [ { name="HorizonApp Packages", email="packages@horizonapp.net" }, diff --git a/src/strandr/strandr.py b/src/strandr/strandr.py index 1dfdae8..76152f7 100644 --- a/src/strandr/strandr.py +++ b/src/strandr/strandr.py @@ -39,14 +39,15 @@ class STRandR: displays = {} resolutions = {} - display_pattern = re.compile(r'(\S+) connected.*?(\d+)x(\d+)\+(\d+)\+(\d+)') + display_pattern = re.compile(r'(\S+) connected.*?(\d+)x(\d+)\+(\d+)\+(\d+).*?(\d+)mm x (\d+)mm') + refresh_rate_pattern = re.compile(r'\s+(\d+)x(\d+)(?:\s+(\d+\.\d+))?(?:\*)?(?:\+)?') current_display = None display_resolutions = [] for line in xrandr_output.splitlines(): display_match = display_pattern.match(line) if display_match: - display_name, width, height, x_pos, y_pos = display_match.groups() + display_name, width, height, x_pos, y_pos, physical_width, physical_height = display_match.groups() current_display = display_name displays[current_display] = { 'primary': ('primary' in line or False), @@ -57,6 +58,14 @@ class STRandR: 'rotation': self.get_rotation(line) } display_resolutions.append(f"{width}x{height}") + elif refresh_rate_pattern and current_display and "*" in line: + refresh_rate_match = refresh_rate_pattern.match(line) + + if refresh_rate_match: + resolution_width, resolution_height, current = refresh_rate_match.groups() + if current: + refresh_rate = float(current) + displays[current_display]['refresh-rate'] = refresh_rate for resolution in display_resolutions: resolutions[resolution] = {'scaling': '1x1'} -- GitLab