Skip to content

Treat LVDS laptop panels as internal displays #5906

@jobenaus

Description

@jobenaus

Description

On laptops whose internal panel is exposed as LVDS-* rather than eDP-*, Omarchy's laptop display handling treats the internal panel as an external monitor.

This causes the lid-switch binding to pass the external-monitor check and attempt to disable the only active display on lid close. On my machine this also triggered a Hyprland/Aquamarine crash during the display disable/re-enable sequence.

System

  • Omarchy: v3.8.1
  • Hyprland: 0.54.3
  • Kernel: 7.0.3-arch1-2
  • GPU: Intel 3rd Gen Core processor Graphics Controller [8086:0166]
  • Internal monitor name: LVDS-1

Reproduction

On a laptop with only LVDS-1 connected:

hyprctl monitors
for status in /sys/class/drm/card*-*/status; do echo "$status: $(cat "$status")"; done
omarchy-hw-external-monitors; echo $?

Expected:

  • LVDS-1 is recognized as the internal panel.
  • omarchy-hw-external-monitors exits non-zero when no external display is connected.
  • Lid close does not attempt to disable the only display.

Actual before the fix:

  • Only eDP-* paths were excluded from the external monitor check.
  • LVDS-1 was considered external.
  • The lid-close binding could call omarchy-hyprland-monitor-internal off even with no real external display connected.

Workaround

Unbinding the default lid-switch bindings prevents the crash:

unbind = , switch:on:Lid Switch
unbind = , switch:off:Lid Switch

Proposed fix

Detect common internal laptop display connector names more broadly (eDP, LVDS, DSI) in both:

  • omarchy-hw-external-monitors
  • omarchy-hyprland-monitor-internal

I have a PR ready with a minimal patch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions