#!/bin/sh

# Adapted from a script by lukesmithxyz, checkout github.com/lukesmithxyz/voidrice

wall_desk=${WALLPAPER_DESKTOP:-$XDG_DATA_HOME/bg}
wall_lock=${WALLPAPER_LOCK:-$XDG_DATA_HOME/lock}

case "$1" in
  desktop) trueloc="$(readlink -f "$2")" &&
      case "$(file --mime-type -b "$trueloc")" in
          image/* ) ln -f "$(readlink -f "$2")" "$wall_desk" && notify-send -i "$wall_desk" "Desktop wallpaper has been changed." ;;
          inode/directory ) ln -f "$(find "$trueloc" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1)" "$wall_desk" && notify-send -i "$wall_desk" "Random desktop wallpaper chosen." ;;
          *) notify-send "🖼️ Error" "Not a valid image or directory." ; exit 1;;
      esac
      xwallpaper --stretch "$wall_desk" ;;
  lock) trueloc="$(readlink -f "$2")" &&
      case "$(file --mime-type -b "$trueloc")" in
          image/* ) ln -f "$(readlink -f "$2")" "$wall_lock" && notify-send -i "$wall_lock" "Lock screen wallpaper has been changed." ;;
          inode/directory ) ln -f "$(find "$trueloc" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1)" "$wall_lock" && notify-send -i "$wall_lock" "Random lock screen wallpaper chosen." ;;
          *) notify-send "🖼️ Error" "Not a valid image or directory." ; exit 1;;
      esac ;;
  both) wallpaper desktop "$2" &&
        wallpaper lock "$2";;
  *) cat << EOF
wallpaper: cli script to set and reset the wallpaper of the desktop and lock
           screen.

Allowed options:
  desktop [PATH]    Set the wallpaper of the desktop to the specified path.
                    If no path is given reset it.
  lock [PATH]       Set the wallpaper of the lock screen to the specified path.
                    If no path is given reset it.
  both [PATH]       Set wallpaper for both lock screen and dektop to a
                    specified path.
                    If no path is given reset it.
  all else          Print this message

EOF
esac