#!/usr/bin/env bash 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 place_on_desktop_ubinstall(){ [[ $(cmdline_value ub.sgnfiles) =~ .*"-iso.sgn" ]] && APPDESKTOP_PLACEONDESKTOP+=",${UBINSTALL_DESKTOP}" } 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}]}" touch ${HOME}/.config/.desktopinitialized done fi } place_on_desktop(){ copy_desktop(){ local APPDESKTOP_PLACEONDESKTOP="$1" APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP//.desktop/} APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP//;/,}; APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP//,,/,} [[ ${APPDESKTOP_PLACEONDESKTOP:0:1} == ',' ]] && APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP:1} [[ ${APPDESKTOP_PLACEONDESKTOP} =~ ','$ ]] && APPDESKTOP_PLACEONDESKTOP=${APPDESKTOP_PLACEONDESKTOP%*,} find /usr/share/applications -type f $(awk 'NR > 1 {print "-o"}; {print "-name", $0".desktop"}' <<< "${APPDESKTOP_PLACEONDESKTOP//,/$'\n'}") | while IFS= read -r FIND_SELECT_DESKTOP; do if [[ ! -f "${XDG_DESKTOP_DIR}/${FIND_SELECT_DESKTOP##*/}" ]]; then cp -f "${FIND_SELECT_DESKTOP}" "${XDG_DESKTOP_DIR}" #grep "#!/usr/bin/env xdg-open" "${XDG_DESKTOP_DIR}/${FIND_SELECT_DESKTOP##*/}" || sed -i 1s%^%'\#\!/usr/bin/env xdg-open\n'% "${XDG_DESKTOP_DIR}/${FIND_SELECT_DESKTOP##*/}" chmod ugo+x "${XDG_DESKTOP_DIR}/${FIND_SELECT_DESKTOP##*/}" 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" [[ -d ${XDG_DESKTOP_DIR} ]] || mkdir -p "${XDG_DESKTOP_DIR}" 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//@/}( |$) ]] \ && copy_desktop ${APPDESKTOP_PLACEONDESKTOP[${SELECT_USERS_GROUPS}]} done <<< ${SELECT_USERS_GROUPS//,/$'\n'} done fi } ################ ##### MAIN ##### ################ place_on_desktop_ubinstall place_on_desktop_init place_on_desktop