27 lines
555 B
Bash
Executable File
27 lines
555 B
Bash
Executable File
#!/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
|