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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hyprland_monitors-0.9.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hyprland_monitors-0.9.0-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file hyprland_monitors-0.9.0.tar.gz.

File metadata

  • Download URL: hyprland_monitors-0.9.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hyprland_monitors-0.9.0.tar.gz
Algorithm Hash digest
SHA256 32afec5fba923283de22239d009772c50e974c0a2b3ab070e9d3ce7e67d7b99a
MD5 5c1e47f0de8a68e921412178efb8ab32
BLAKE2b-256 d109d8cff343afb02a76bf8004ca189038d65620f78cedd90cd4aa33d04b448e

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyprland_monitors-0.9.0.tar.gz:

Publisher: publish.yml on BlueManCZ/hyprland-monitors

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyprland_monitors-0.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for hyprland_monitors-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0f6eeb3dae2a9db0a5eaaeca09aa63f4ff0d31d6ff7dbe763245b501208f1989
MD5 592a374163693ae4a737a9d8f0ad57de
BLAKE2b-256 eae55515c5d0ef146622250cc9cbdfdf1b603b77087553becb1191501de88d71

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyprland_monitors-0.9.0-py3-none-any.whl:

Publisher: publish.yml on BlueManCZ/hyprland-monitors

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page