#!/usr/bin/env bash
FALLBACK_MON="eDP-1"
FALLBACK_RES="preferred,auto,1"
SOCKET="/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock"

apply() {
  local total
  total=$(hyprctl monitors all -j | jq 'length')
  if [[ "$total" -gt 1 ]]; then
    hyprctl keyword monitor "$FALLBACK_MON,disable"
  else
    hyprctl keyword monitor "$FALLBACK_MON,$FALLBACK_RES"
  fi
}

handle() {
  case "$1" in
  monitoradded* | monitorremoved*) apply ;;
  esac
}

# Wait for socket, then listen -- loop reconnects if socat exits
while true; do
  while [[ ! -S "$SOCKET" ]]; do sleep 0.5; done

  apply

  socat -U - "UNIX-CONNECT:$SOCKET" |
    while read -r line; do handle "$line"; done

  sleep 1 # brief pause before reconnect attempt
done
