You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ublinux-init/ublinux/rc.desktop/all/placeondesktop

68 lines
2.9 KiB

#!/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