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.post.d/18-kiosk-xfce4-kioskrc

80 lines
4.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env bash
ENABLED=yes
[[ ${ENABLED} != "yes" ]] && exit 0
DEBUGMODE=no
SOURCE=/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
debug_mode "$0" "$@"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/kiosk; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
## Режим киоска XFCE4, запретить изменять параметры пользователям и группам
## XFCE4_KIOSK[<channel>:<property>]=<user_groups>
## <user_groups> # Пользователи и группы, варианты значений:
## =ALL # Разрешить всем
## =NONE # Запретить
## =@whell,@users # Разрешить группам
## =superadmin,user-1 # Разрешить пользователям
## =@wheel,user-1 # Разрешить группе и пользователю
#XFCE4_KIOSK[xfce4-panel:CustomizePanel]=@wheel
KIOSKRC="/etc/xdg/xfce4/kiosk/kioskrc"
if [[ ${#XFCE4_KIOSK[@]} -ne 0 ]]; then
[[ -d ${KIOSKRC%/*} ]] || install -dm0755 -o root -g root "${KIOSKRC%/*}"
true > ${KIOSKRC}
for SELECT in "${!XFCE4_KIOSK[@]}"; do
SECTION=$(cut -d: -f1 <<< ${SELECT})
PROPERTY=$(cut -d: -f2 <<< ${SELECT})
VALUE=${XFCE4_KIOSK[${SELECT}]}
[[ ${VALUE,,} == "none" ]] && VALUE=NONE
[[ ${VALUE,,} == "all" ]] && VALUE=ALL
[[ ${VALUE} =~ '@' ]] && VALUE=$(tr '@' '%' <<< ${VALUE})
grep -q "${SECTION}" ${KIOSKRC} || echo -e "[${SECTION}]\n" >> ${KIOSKRC}
sed "/^${PROPERTY}.*/d" -i ${KIOSKRC}
sed "/\[${SECTION}\]/a ${PROPERTY}=${VALUE}" -i ${KIOSKRC}
done
fi
## Назначить настройки киоска XFCE4 пользователям
## XFCE4_KIOSK_USER_LOCKED=disable
## disable # Снять все ограничения
## XFCE4_KIOSK_USER_LOCKED=<user_groups>
## <user_groups> # Пользователи и группы, варианты значений:
## =* # Все пользователи
## =@whell;@users # Указанные группы
## =superadmin;user-1 # Указанным пользователям
## =@wheel;user-1 # Указанным группам и пользователям
## XFCE4_KIOSK_USER_LOCKED="*"
## Назначить исключения настроек киоска XFCE4 пользователям
## XFCE4_KIOSK_USER_UNLOCKED=disable
## disable # Снять все ограничения
## XFCE4_KIOSK_USER_UNLOCKED=<user_groups>
## <user_groups> # Пользователи и группы, варианты значений:
## =* # Все пользователи
## =@whell;@users # Указанные группы
## =superadmin;user-1 # Указанным пользователям
## =@wheel;user-1 # Указанным группам и пользователям
## XFCE4_KIOSK_USER_UNLOCKED="root,@wheel"
PATH_XDG_XFCE_CHANNEL="/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/"
PARAM_LOCKED=
PARAM_UNLOCKED=
if [[ -n ${XFCE4_KIOSK_USER_LOCKED} || -n ${XFCE4_KIOSK_USER_UNLOCKED} ]]; then
if [[ ${XFCE4_KIOSK_USER_LOCKED} == "disable" || ${XFCE4_KIOSK_USER_UNLOCKED} == "disable" ]]; then
for FILE_CHANNEL_XML in ${PATH_XDG_XFCE_CHANNEL}/*.xml; do
sed -E "s/^<channel name=\"([^\"]+)\" version=\"([^\"]+)\"[^>]*>/<channel name=\"\1\" version=\"\2\">/" -i ${FILE_CHANNEL_XML}
done
else
[[ -n ${XFCE4_KIOSK_USER_LOCKED} ]] && PARAM_LOCKED=" locked=\"${XFCE4_KIOSK_USER_LOCKED//,/;}\""
[[ -n ${XFCE4_KIOSK_USER_UNLOCKED} ]] && PARAM_UNLOCKED=" unlocked=\"${XFCE4_KIOSK_USER_UNLOCKED//,/;}\""
for FILE_CHANNEL_XML in ${PATH_XDG_XFCE_CHANNEL}/*.xml; do
sed -E "s/^<channel name=\"([^\"]+)\" version=\"([^\"]+)\"[^>]*>/<channel name=\"\1\" version=\"\2\"${PARAM_LOCKED}${PARAM_UNLOCKED}>/" -i ${FILE_CHANNEL_XML}
done
fi
fi