Skip to content

Monitor positions don't auto-adjust when scale changes, causing overlap #13062

Closed

Description

@gbenselum

When changing monitor scale factor in ~/.config/hypr/monitors.lua, hardcoded position values (in logical pixels) cause monitor overlap because Hyprland interprets positions as physical pixels.

Steps to reproduce:

  1. Configure two monitors with hardcoded positions (e.g., DP-1 at 0x0, eDP-1 at 0x540)
  2. Set scale = 2 for both
  3. Reload Hyprland
  4. Monitors overlap (~50% in this case)

Expected: Positions should auto-recalculate for physical pixels when scale changes, or Omarchy should provide a helper.

Workaround: Use position = "auto" or manually multiply positions by scale factor.

System: Omarchy 4.0.4-1, Hyprland Hyprland 0.56.2 built from branch v0.56.2 at commit efb50993780079460b0cbed1363e2166a2de1d9f clean ([gha] Nix: update inputs).

Config example showing the issue:

local omarchy_gdk_scale = 2
local omarchy_monitor_scale = 2

hl.env("GDK_SCALE", tostring(omarchy_gdk_scale))
hl.monitor({ output = "DP-1", mode = "1920x1080@60", position = "0x0", scale = omarchy_monitor_scale })
hl.monitor({ output = "eDP-1", mode = "preferred", position = "0x540", scale = omarchy_monitor_scale })

With scale=2:

  • DP-1: 1920x1080 → 3840x2160 physical at 0x0
  • eDP-1: position 0x540 → 0x1080 physical (540 * 2)
  • Result: eDP-1 starts at y=1080, overlapping DP-1's bottom 1080px (50% overlap)

Screenshot attached showing the overlap.

Activity

  1. gbenselum commented on Sep 23, 2026

    @gbenselum
    Author

    Screenshot saved at: /home/gabriel/Pictures/screenshot-2026-09-23_17-22-53.png (attach manually via GitHub web UI)

  2. jandrusk commented on Oct 8, 2026

    @jandrusk

    Could you attach the screenshot? The comment above points at a local path (/home/gabriel/Pictures/...), so it never uploaded. The output of hyprctl monitors -j with the overlap visible would help too.

    One thing to double-check: Hyprland treats position as logical (scaled) pixels. At scale = 2, a 1920x1080 DP-1 is 960x540 logical, so 0x540 puts eDP-1 directly under it. If you're still seeing a 50% overlap with that config, something else is moving the outputs. Related open work: #10922 (live scale change desyncs positions), #13142 and #11854 (recompute positions when scaling).

  3. gbenselum commented on Oct 8, 2026

    @gbenselum
    Author

    those three issues are totally related to my issue and they are more accurate than my issue. I will follow them. This issue can be closed. I will follow the PRs and wait for the fix! thanks!

  4. gbenselum commented on Oct 14, 2026

    @gbenselum
    Author

    its fixed in dev. thanks for the support!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions