#!/usr/bin/env bash set -euo pipefail INTERNAL="eDP-1" # Count non-internal monitors reported by Hyprland external_count=$( hyprctl monitors | awk -v internal="$INTERNAL" ' $1 == "Monitor" { name = $2 sub(":", "", name) # strip trailing colon if (name != internal) { print name } } ' | wc -l ) # Always turn off the laptop panel on lid close hyprctl keyword monitor "$INTERNAL, disable" # Only lock if there is NO external monitor if [ "$external_count" -eq 0 ]; then hyprlock systemctl suspend fi