#!/bin/bash

#######################################################
## AOSC Retro Wallpaper Manager (CLI)
## Copyright (c) Neruthes <https://neruthes.xyz> 2020
## Licensed under GNU GPLv2.
#######################################################

## Init
SUBCOMMAND=$1
ARG0=$2
ARG1=$3
ARG2=$4

## Help
SHOWHELP=false
if [[ x$SUBCOMMAND == 'x' ]]; then
    SHOWHELP=true
fi
if [[ x$SUBCOMMAND == 'true' ]]; then
    SHOWHELP=true
fi
if [[ $SHOWHELP == 'true' ]]; then
    echo "WallpaperCtl help:"
    echo "    Usage:    wallpaperctl SUBCOMMAND Arg0 Arg1 ..."
    echo "    Subcommands:"
    echo "        ls        List wallpapers"
    echo "        use       Use a wallpaper"
    exit 0
fi

## Constants
UUID="63d1cc3135374917824c9b33a5455cb8"
TMP=/tmp/tmp.$UUID

## Config
CONFDIR=$HOME/.config/arwm
mkdir -p $CONFDIR

## Config: Width
GOODWIDTHS=(800 1280 1600 1920)
xrandr 2> /dev/null | grep current > $TMP 2> /dev/null
sed -i "s/.*current //g" $TMP
sed -i "s/, m.*//g" $TMP
sed -i "s/ x.*//g" $TMP
RAWDWIDTH=`cat $TMP`
isSTRANGEWIDTH=true;
for (( i = 0; i < 4; i++ )); do
    if [[ ${GOODWIDTHS[$i]} == $RAWDWIDTH ]]; then
        isSTRANGEWIDTH=false
        DWIDTH=$RAWDWIDTH
    fi
done
if [[ $isSTRANGEWIDTH == 'true' ]]; then
    isDWIDTHFOUND=false
    for (( i = 0; i < 4; i++ )); do
        if [ ${GOODWIDTHS[$i]} -gt $RAWDWIDTH ]; then
            if [[ $isDWIDTHFOUND == 'false' ]]; then
                isDWIDTHFOUND=true
                DWIDTH=${GOODWIDTHS[$i]}
            fi
        fi
    done
    if [[ $isDWIDTHFOUND == 'false' ]]; then
        DWIDTH=1920
    fi
fi
# echo "Width: $DWIDTH"

## Config: Prefix
PREFIX="extra-wallpapers/aosc-wallpapers-"
cat $CONFDIR/prefix > /dev/null 2> $TMP
PREFIX_STDERR=`cat $TMP`
rm $TMP
if [[ ${PREFIX_STDERR:0:3} = "cat" ]]; then
    # Config file "prefix" does not exist
    echo $PREFIX > $CONFDIR/prefix 2> /dev/null
else
    PREFIX=`cat $CONFDIR/prefix`
fi

## Start
case $SUBCOMMAND in
    ls)
        ls /usr/share/backgrounds > $TMP
        sed -z -i "s/\nxfce//g" $TMP
        cat $TMP
        rm $TMP
        ;;
    info)
        StdName=$ARG0
        FieldName=$ARG1
        MetadataPath=/usr/share/wallpapers/$StdName/metadata.desktop
        grep "X-KDE-PluginInfo-$FieldName=" $MetadataPath > $TMP
        sed -i "s/$FieldName//" $TMP
        QueryResult=`cat $TMP`
        rm $TMP
        echo ${QueryResult:18}
        ;;
    world)
        apt search $PREFIX
        ;;
    search)
        apt search $PREFIX$ARG0
        ;;
    install)
        sudo apt install $PREFIX$ARG0
        ;;
    rm)
        sudo apt uninstall $PREFIX$ARG0
        ;;
    lsPkgs)
        apt list > $TMP 2> /dev/null
        grep installed $TMP > $TMP.1
        grep $PREFIX $TMP.1 > $TMP
        cat $TMP
        rm $TMP $TMP.1
        ;;
    pkgInfo)
        apt info $PREFIX$ARG0
        ;;
    use)
        FILEPATH="/usr/share/wallpapers/$ARG0/contents/images/$(ls /usr/share/wallpapers/$ARG0/contents/images | grep ${DWIDTH}x)"
        if [[ -f $FILEPATH ]]; then
            echo 1 > /dev/null
        else
            FILEPATH="/usr/share/wallpapers/$ARG0/contents/images/1600x1200.png"
        fi
        echo "Using $FILEPATH"
        feh --bg-fill $FILEPATH
        mkdir -p $HOME/.config/cwallpaper 2> /dev/null
        printf "s: $FILEPATH" > $HOME/.config/cwallpaper/lastwallpaper 2> /dev/null
        mkdir -p $HOME/.config/wallpaperctl 2> /dev/null
        echo $ARG0 > $HOME/.config/wallpaperctl/lastwallpaper 2> /dev/null
        ;;
    resume)
        wallpaperctl use $(cat $HOME/.config/wallpaperctl/lastwallpaper)
        ;;
esac
