#!/bin/bash
# Extended pattern matching: https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html#Pattern-Matching
shopt -s extglob

ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0

SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null

SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/kiosk; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null

declare -A APPDESKTOP_PLACEONDESKTOP APPDESKTOP_PLACEONDESKTOP_INIT

01_place_on_desktop_ubinstall(){
    [[ $(cmdline_value ub.sgnfiles) =~ .*"-iso.sgn" ]] && APPDESKTOP_PLACEONDESKTOP+=",${UBINSTALL_DESKTOP}"
}

02_place_on_desktop_init(){
    [[ -f ${HOME}/.config/.desktopinitialized ]] && return 0
    if [[ -n ${APPDESKTOP_PLACEONDESKTOP_INIT[@]} ]]; then
	for SELECT_USERS_GROUPS in "${!APPDESKTOP_PLACEONDESKTOP_INIT[@]}"; do
	    APPDESKTOP_PLACEONDESKTOP[${SELECT_USERS_GROUPS}]+=",${APPDESKTOP_PLACEONDESKTOP_INIT[${SELECT_USERS_GROUPS}]}"
	done
    fi
}

03_place_on_desktop_trust(){
    trust_desktop(){
	local APPDESKTOP_PLACEONDESKTOP="$1"
	APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP//.desktop/}
	APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP//@lock/}
	APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP//@dislock/}
	APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP//;/,}; APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP//,,/,}
	[[ ${APPDESKTOP_PLACEONDESKTOP:0:1} == ',' ]] && APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP:1}
	[[ ${APPDESKTOP_PLACEONDESKTOP} =~ ','$ ]] && APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP%*,}
	find "${XDG_DESKTOP_DIR}" -type f $(tr ',;' $'\n' <<< "${APPDESKTOP_PLACEONDESKTOP}" | awk 'NR > 1 {print "-o"}; {print "-name", $0".desktop"}') | while IFS= read -r FIND_SELECT_DESKTOP; do
	    if ! gio info "${FIND_SELECT_DESKTOP}" | grep metadata::xfce-exe-checksum > /dev/null 2>&1; then
		gio set -t string "${FIND_SELECT_DESKTOP}" metadata::xfce-exe-checksum "$(sha256sum "${FIND_SELECT_DESKTOP}" | awk '{print $1}')" 2>/dev/null
	    fi
	done
    }
    if [[ -n ${APPDESKTOP_PLACEONDESKTOP[@]} ]]; then
	SOURCE=${HOME}/.config/user-dirs.dirs; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
	[[ -n ${XDG_DESKTOP_DIR} ]] || XDG_DESKTOP_DIR="${HOME}/$(gettext -d xdg-user-dirs "Desktop")"
	[[ -n ${XDG_DESKTOP_DIR} ]] || XDG_DESKTOP_DIR="${HOME}/Desktop"
	ID_GROUPS=$(id --name --groups)
	for SELECT_USERS_GROUPS in "${!APPDESKTOP_PLACEONDESKTOP[@]}"; do
	    while IFS= read -r READ_USER_GROUP; do
		[[ ${READ_USER_GROUP} == "0" ]] || [[ ${READ_USER_GROUP} == ${USER} ]] || [[ ${READ_USER_GROUP} =~ ^'@' && ${ID_GROUPS} =~ (^| )${READ_USER_GROUP//@/}( |$) ]] \
		&& trust_desktop ${APPDESKTOP_PLACEONDESKTOP[${SELECT_USERS_GROUPS}]}
	    done <<< ${SELECT_USERS_GROUPS//@(,|;)/$'\n'}
	done
	
    fi
}


################
##### MAIN #####
################

    01_place_on_desktop_ubinstall
    02_place_on_desktop_init
    03_place_on_desktop_trust
