Skip to main content

hyprland-monitors

Monitor management utilities for Hyprland. Built on top of hyprland-socket.

Scale computation, layout geometry, config line parsing, and hardware capability detection for Hyprland monitor management.

Installation

pip install hyprland-monitors

Usage

Scale computation

Hyprland quantizes display scale to multiples of 1/120 and requires both dimensions to divide evenly. compute_valid_scales finds all valid scales for a given resolution.

from hyprland_monitors.monitors import compute_valid_scales, nearest_scale_index

scales = compute_valid_scales(3440, 1440)
for s in scales:
    print(f"  {s.label} ({s.value})")

# Find the closest valid scale to a target
idx = nearest_scale_index(scales, 1.5)
print(f"Nearest to 1.5: {scales[idx].label}")

Layout geometry

Check adjacency, detect gaps, and adjust positions when monitors resize.

from hyprland_monitors.monitors import (
    MonitorState, is_adjacent, all_monitors_connected, adjust_neighbors,
)

a = MonitorState(name="DP-1", make="", model="", width=1920, height=1080,
                 refresh_rate=60.0, x=0, y=0, scale=1.0)
b = MonitorState(name="DP-2", make="", model="", width=1920, height=1080,
                 refresh_rate=60.0, x=1920, y=0, scale=1.0)

print(is_adjacent(a, b))                # True — edge-adjacent
print(all_monitors_connected([a, b]))   # True — connected group

# After resizing a, shift b to maintain adjacency
old_w, old_h = a.effective_size
a.scale = 2.0
adjust_neighbors([a, b], a, old_w, old_h)
print(b.x)  # 960 — shifted to stay adjacent

Config line parsing

Parse and generate Hyprland monitor = config lines.

from hyprland_monitors.monitors import lines_from_monitors, parse_mode, parse_extras

lines = lines_from_monitors([a, b])
# ['DP-1, 1920x1080@60.00Hz, 0x0, 2', 'DP-2, 1920x1080@60.00Hz, 960x0, 1']

mode = parse_mode("3440x1440@165.00Hz")
# {'width': 3440, 'height': 1440, 'refresh_rate': 165.0}

extras = parse_extras("DP-1, 1920x1080@60, 0x0, 1, bitdepth, 10, vrr, 1")
# {'bit_depth': '10', 'vrr': '1'}

Hardware detection

Query monitor capabilities via EDID parsing and DRM kernel properties.

from hyprland_monitors.hardware import get_monitor_capabilities

caps = get_monitor_capabilities("DP-1")
# {'hdr': True, 'ten_bit': True, 'vrr': False,
#  'max_luminance': 603.65, 'max_avg_luminance': 400.0, 'min_luminance': 0.03}

License

MIT

Metadata

Release files for hyprland-monitors 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hyprland-monitors 0.9.0
File Size Uploaded
hyprland_monitors-0.9.0.tar.gz 13.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hyprland-monitors 0.9.0
File Interpreter ABI Platform
hyprland_monitors-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.6 kB

Release files / hyprland_monitors-0.9.0.tar.gz

Download URL hyprland_monitors-0.9.0.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
32afec5fba923283de22239d009772c50e974c0a2b3ab070e9d3ce7e67d7b99a
BLAKE2b-256 checksum
How to use checksums
d109d8cff343afb02a76bf8004ca189038d65620f78cedd90cd4aa33d04b448e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 8, 2026.

Transparency log

Release files / hyprland_monitors-0.9.0-py3-none-any.whl

Download URL hyprland_monitors-0.9.0-py3-none-any.whl
Size 15.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f6eeb3dae2a9db0a5eaaeca09aa63f4ff0d31d6ff7dbe763245b501208f1989
BLAKE2b-256 checksum
How to use checksums
eae55515c5d0ef146622250cc9cbdfdf1b603b77087553becb1191501de88d71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page