hyprdots/Configs/.local/share/bin/swwwallkon.sh
2024-12-10 23:54:56 +01:00

73 lines
2.2 KiB
Bash
Executable file

#!/usr/bin/env sh
#// Set variables
scrDir=$(dirname "$(realpath "$0")")
source "${scrDir}/globalcontrol.sh"
scrName="$(basename "$0")"
kmenuPath="$HOME/.local/share/kio/servicemenus"
kmenuDesk="${kmenuPath}/hydewallpaper.desktop"
tgtPath="$(dirname "${hydeThemeDir}")"
get_themes
#// Evaluate options
while getopts "t:w:" option ; do
case $option in
t ) # Set theme
for x in "${!thmList[@]}" ; do
if [ "${thmList[x]}" == "$OPTARG" ] ; then
setTheme="${thmList[x]}"
break
fi
done
[ -z "${setTheme}" ] && echo "Error: '$OPTARG' theme not available..." && exit 1
;;
w ) # Set wallpaper
if [ -f "$OPTARG" ] && file --mime-type "$OPTARG" | grep -q 'image/' ; then
setWall="$OPTARG"
else
echo "Error: '$OPTARG' is not an image file..."
exit 1
fi
;;
* ) # Refresh menu
unset setTheme
unset setWall
;;
esac
done
#// Regenerate desktop
if [ ! -z "${setTheme}" ] && [ ! -z "${setWall}" ] ; then
inwallHash="$(set_hash "${setWall}")"
get_hashmap "${tgtPath}/${setTheme}"
if [[ "${wallHash[@]}" == *"${inwallHash}"* ]] ; then
notify-send -a "t2" -i "${thmbDir}/${inwallHash}.sqre" "Error" "Hash matched in ${setTheme}"
exit 0
fi
cp "${setWall}" "${tgtPath}/${setTheme}/wallpapers"
ln -fs "${tgtPath}/${setTheme}/wallpapers/$(basename "${setWall}")" "${tgtPath}/${setTheme}/wall.set"
"${scrDir}/themeswitch.sh" -s "${setTheme}"
notify-send -a "t1" -i "${thmbDir}/${inwallHash}.sqre" "Wallpaper set in ${setTheme}"
else
echo -e "[Desktop Entry]\nType=Service\nMimeType=image/png;image/jpeg;image/jpg;image/gif\nActions=Menu-Refresh$(printf ";%s" "${thmList[@]}")\nX-KDE-Submenu=Set As Wallpaper...\n\n[Desktop Action Menu-Refresh]\nName=.: Refresh List :.\nExec=${scrName}" > "${kmenuDesk}"
for i in "${!thmList[@]}" ; do
echo -e "\n[Desktop Action ${thmList[i]}]\nName=${thmList[i]}\nExec=${scrName} -t \"${thmList[i]}\" -w %u" >> "${kmenuDesk}"
done
fi