#!/usr/bin/env bash

set -u

export DISPLAY=:0
export XAUTHORITY=/home/ray/.Xauthority
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

LOG="$HOME/shire-appliance-awake.log"

exec >>"$LOG" 2>&1

echo
echo "===== $(date --iso-8601=seconds) SHIRE ALWAYS AWAKE ====="

for _ in $(seq 1 60); do
  xdpyinfo >/dev/null 2>&1 && break
  sleep 1
done

xdpyinfo >/dev/null 2>&1 || {
  echo "FAIL: Display :0 unavailable."
  exit 1
}

set_key() {
  SCHEMA="$1"
  KEY="$2"
  VALUE="$3"

  gsettings list-schemas |
    grep -Fxq "$SCHEMA" || return 0

  gsettings list-keys "$SCHEMA" |
    grep -Fxq "$KEY" || return 0

  gsettings set "$SCHEMA" "$KEY" "$VALUE"
  echo "$SCHEMA $KEY = $(gsettings get "$SCHEMA" "$KEY")"
}

set_key \
  org.cinnamon.desktop.session \
  idle-delay \
  0

set_key \
  org.cinnamon.desktop.screensaver \
  lock-enabled \
  false

set_key \
  org.cinnamon.desktop.screensaver \
  idle-activation-enabled \
  false

set_key \
  org.cinnamon.desktop.screensaver \
  lock-delay \
  0

set_key \
  org.cinnamon.settings-daemon.plugins.power \
  sleep-display-ac \
  0

set_key \
  org.cinnamon.settings-daemon.plugins.power \
  sleep-display-battery \
  0

set_key \
  org.cinnamon.settings-daemon.plugins.power \
  sleep-inactive-ac-timeout \
  0

set_key \
  org.cinnamon.settings-daemon.plugins.power \
  sleep-inactive-battery-timeout \
  0

set_key \
  org.cinnamon.settings-daemon.plugins.power \
  sleep-inactive-ac-type \
  "'nothing'"

set_key \
  org.cinnamon.settings-daemon.plugins.power \
  sleep-inactive-battery-type \
  "'nothing'"

set_key \
  org.cinnamon.settings-daemon.plugins.power \
  idle-dim \
  false

xset s off
xset s noblank
xset -dpms

if command -v cinnamon-screensaver-command >/dev/null 2>&1; then
  cinnamon-screensaver-command --deactivate \
    >/dev/null 2>&1 ||
  cinnamon-screensaver-command -d \
    >/dev/null 2>&1 ||
  true
fi

echo "Display blanking: disabled"
echo "DPMS: disabled"
echo "Screen lock: disabled"
echo "Desktop sleep: disabled"
