#!/bin/bash
IMAGE=$HOME/.lockscreen.jpg
SCROT_APP=grim
SCROT_ARGS=" -t jpeg"
LOCK_APP=swaylock
LOCK_ARGS=" -f -c 000000 -i $IMAGE"
INHIBIT_FILE=$HOME/.inhibit


function _check_app() {
  which $1 &> /dev/null
  if [ $? -ne 0 ]; then
    echo "ERROR: missing app \"$1\""
    exit 1
  fi
}

function _check_inhibit() {
  if [ -e $INHIBIT_FILE ]; then
    echo "ERROR: found inhibit file $INHIBIT_FILE"
    exit 1
  fi
}

function _inhibit() {
  case "$1" in
    0|off)
      rm -f $INHIBIT_FILE
      echo "inhibit disabled"
      ;;
    1|on)
      touch $INHIBIT_FILE
      echo "inhibit enabled"
      ;;
    *)
      echo "ERROR: unknown argument: $1"
      ;;
  esac
}

function _clean() {
  rm -vf $IMAGE
}

function _lock() {
  _check_inhibit
  _check_app $LOCK_APP
  $LOCK_APP $LOCK_ARGS
}

function _off() {
  swaymsg "output * dpms off"
}

function _on() {
  swaymsg "output * dpms on"
}

function _screenshot() {
  _check_app $SCROT_APP
  $SCROT_APP $SCROT_ARGS $IMAGE
  convert -blur 4x4 $IMAGE $IMAGE
}

function _suspend() {
  _check_inhibit
  systemctl suspend-then-hibernate
}

mkdir -p $HOME/log
echo "lock: $(date) args: $*" >> $HOME/log/sway.log

case "$1" in
  inhibit)
    _inhibit $2
    ;;
  lock)
    _on
    _screenshot
    _lock
    # _clean
    ;;
  lockonly)
    _lock
    # _clean
    ;;
  off)
    _screenshot
    _off
    ;;
  on)
    _on
    # _clean
    ;;
  screenshot)
    _on
    _screenshot
    ;;
  suspend)
    _suspend
    ;;
  *)
    echo "invalid argument \"$1\"."
    echo "arguments: [lock|lockonly|off|on|screenshot]"
esac