#!/usr/bin/env bash set -euo pipefail INTERNAL="eDP-1" sleep 0.2 external_on_count=$( hyprctl -j monitors | jq -r --arg internal "$INTERNAL" ' [ .[] | select(.name != $internal) | select(.disabled != true) | select(.dpmsStatus == true) ] | length ' ) if [ "$external_on_count" -eq 0 ]; then # no external screen, we sleep #systemctl hybrid-sleep #systemctl suspend-then-hibernate #debounce hyprlock pgrep -x hyprlock >/dev/null || hyprlock systemctl suspend-then-hibernatehyprctl else # docked, we turn off internal screen hyprctl keyword monitor "$INTERNAL, disable" fi