Add APPDESKTOP_PLACEONDESKTOP_INIT and APPDESKTOP_PLACEONDESKTOP

master v2.76
Dmitry Razumov 2 years ago
parent 7a264efc82
commit d0e5749744
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -15,6 +15,10 @@ declare -A REPOSITORY
# autostart apps/scripts
#AUTOEXEC=
#rc.desktop/all/placeondesktop
#rc.desktop/deonly/xfce4-ubinstall-trust
UBINSTALL_DESKTOP="ubinstall,ubinstall.cli"
#rc.desktop/all/fusion-icon
# timeout to start fusion-icon
#FUSIONICONTIMEOUT=5

@ -1,21 +1,67 @@
#!/bin/sh
#!/usr/bin/env bash
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0
XDG_DESKTOP_DIR="$HOME/Рабочий стол"
. /usr/lib/ublinux/default
SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
[ -z "$PLACEONDESKTOP" ] && exit 0
[ -f ~/.config/.desktopinitialized ] && exit 0
. ~/.config/user-dirs.dirs
[ -d "$XDG_DESKTOP_DIR" ] || mkdir -p "$XDG_DESKTOP_DIR"
echo "$PLACEONDESKTOP" | tr ',;' \\n | while read a ;do
DF=$(find /usr/share/applications -type f -name $a.desktop )
[ -f "$DF" ] && cp "$DF" "$XDG_DESKTOP_DIR"
grep "#!/usr/bin/env xdg-open" "$XDG_DESKTOP_DIR"/$a.desktop || sed -i 1s%^%'\#\!/usr/bin/env xdg-open\n'% "$XDG_DESKTOP_DIR"/$a.desktop
chmod 755 "$XDG_DESKTOP_DIR"/$a.desktop
[[ ${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
touch ~/.config/.desktopinitialized
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

@ -0,0 +1,65 @@
#!/bin/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}]}"
done
fi
}
place_on_desktop_trust(){
trust_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 "${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
chmod ugo+x "${FIND_SELECT_DESKTOP}"
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 #####
################
/usr/lib/ublinux/rc.desktop/all/placeondesktop
place_on_desktop_ubinstall
place_on_desktop_init
place_on_desktop_trust

@ -0,0 +1 @@
../deonly/xfce4-placeondesktop-trust

@ -14,21 +14,6 @@ DEBUGMODE=no
. usr/lib/ublinux/default
debug_mode "$0" "$@"
INSTALLDESKTOP="ubinstall;ubinstall.cli"
echo "${INSTALLDESKTOP}" | tr ',;' \\n | while read i; do
if [[ -f usr/share/applications/"${i}".desktop ]]; then
if ! [[ -w /memory/layer-base/0 || -d /mnt/livedata || -w /mnt/livemedia ]] || grep -q ".*-iso.sgn" <<< $(cmdline_value ub.sgnfiles); then
if ! grep -q ^Hidden=true usr/share/applications/"${i}".desktop ; then
# DESKTOPNAME=$(chroot . bash -c "xdg-user-dirs-update && xdg-user-dir DESKTOP | cut -d/ -f3")
DESKTOPNAME=$(chroot . gettext -d xdg-user-dirs "Desktop")
mkdir -p etc/skel/"${DESKTOPNAME}"
cp usr/share/applications/"${i}".desktop etc/skel/"${DESKTOPNAME}"/ && echodebug "${i}.desktop added to skel."
chmod 755 etc/skel/"${DESKTOPNAME}"/"${i}".desktop
fi
fi
fi
done
if [[ -f etc/ublinux/steam ]] ;then
. etc/ublinux/steam
rm -f etc/skel/.steam etc/skel/.local/share/Steam 2>/dev/null

@ -1282,6 +1282,26 @@ NSSWITCHWINBIND=yes
#APPDESKTOP_BLACKLIST[user-1]=xarchiver,xfce4-power-manager-settings
#APPDESKTOP_WHITELIST[user-1]=
## На рабочий стол поместить ярлыки приложений из /usr/share/applications/ , только для нового пользователя
## APPDESKTOP_PLACEONDESKTOP_INIT[<users>]=<desktop_files>
## [<users>] # Применить для пользователя, пример: [superadmin,user-1]. Разделитель: запятая, точка с запятой
## [<@groups>] # Применить для группы, пример: [@whell,@users]
## # Можно комбинировать группы с пользователями, пример: @wheel,user-1
## [*] # Все пользователи системы. Если не указано, то все пользователи системы
## =<desktop_files> # Файлы *.desktop. Разделитель: запятая, точка с запятой. Указывается без суфикса ".desktop"
## APPDESKTOP_PLACEONDESKTOP_INIT[superadmin,@wheel]=ubinstall,htop
## APPDESKTOP_PLACEONDESKTOP_INIT=gimp,pinta
## На рабочий стол поместить ярлыки приложений из /usr/share/applications/
## APPDESKTOP_PLACEONDESKTOP[<users>]=<desktop_files>
## [<users>] # Применить для пользователя, пример: [superadmin,user-1]. Разделитель: запятая, точка с запятой
## [<@groups>] # Применить для группы, пример: [@whell,@users]
## # Можно комбинировать группы с пользователями, пример: @wheel,user-1
## [*] # Все пользователи системы. Если не указано, то все пользователи системы
## =<desktop_files> # Файлы *.desktop. Разделитель: запятая, точка с запятой. Указывать без суфикса ".desktop"
## APPDESKTOP_PLACEONDESKTOP[superadmin,@wheel]=ubinstall,htop
## APPDESKTOP_PLACEONDESKTOP=gimp,pinta
[/etc/ublinux/desktop]
## Настройка сервисов окружения рабочего стола
################################################################################

Loading…
Cancel
Save