#!/bin/bash

# Set recorder based on GPU
if lspci | grep -qi 'nvidia'; then
  RECORDER="wf-recorder"
  RECORDER_ARGS="-c libx264 -p crf=23 -p preset=medium -p movflags=+faststart"
else
  RECORDER="wl-screenrec"
  RECORDER_ARGS="--ffmpeg-encoder-options=\"-c:v libx264 -crf 23 -preset medium -movflags +faststart\""
fi

screenrecording() {
  local filename
  filename="$HOME/Videos/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
  notify-send "Screen recording starting..." -t 1000
  sleep 1
  eval "$RECORDER -f \"$filename\" $RECORDER_ARGS \"\$@\""
}

stop_recording() {
  if pgrep -x "$RECORDER" >/dev/null; then
    pkill -x "$RECORDER"
    notify-send "Screen recording saved to ~/Videos" -t 2000
    return 0
  fi
  return 1
}

if stop_recording; then
  # Recording was stopped
  :
elif [[ "$1" == "output" ]]; then
  screenrecording
else
  region=$(slurp) || exit 1
  screenrecording -g "$region"
fi
