#!/usr/bin/env bash # # Author: Dmitry Razumov # Copyright (c) 2021-2025 UBLinux # ENABLED=yes [[ ${ENABLED} != yes ]] && exit 0 SOURCE=/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null SOURCE=${SYSCONF}/theme; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null [[ ${DISPLAYMANAGER} == @(none|no|disable) ]] && exit xfce4_background(){ [[ -x /usr/bin/startxfce4 ]] || return 0 #Получить типы мониторов без xrandr: xfconf-query -c xfce4-desktop -l | grep "/backdrop/screen0/monitor.*/workspace0/last-image #Глобально заменить фон: install -Dm0644 ${BACKGROUND_DE} /usr/share/backgrounds/background.jpg case ${BACKGROUND_DE_MODE} in 0) BACKGROUND_DE_MODE_XFCE4=5 ;; 1) BACKGROUND_DE_MODE_XFCE4=4 ;; 2) BACKGROUND_DE_MODE_XFCE4=1 ;; *) BACKGROUND_DE_MODE_XFCE4=5 ;; esac #[[ -z ${BACKGROUND_DE_MODE_XFCE4} && ${BACKGROUND_DE_MODE} == 0 ]] && BACKGROUND_DE_MODE_XFCE4=5 #[[ -z ${BACKGROUND_DE_MODE_XFCE4} && ${BACKGROUND_DE_MODE} == 1 ]] && BACKGROUND_DE_MODE_XFCE4=4 #[[ -z ${BACKGROUND_DE_MODE_XFCE4} && ${BACKGROUND_DE_MODE} == 2 ]] && BACKGROUND_DE_MODE_XFCE4=1 #[[ -z ${BACKGROUND_DE_MODE_XFCE4} ]] && BACKGROUND_DE_MODE_XFCE4=5 while read MONITOR_TYPE; do xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor${MONITOR_TYPE}/workspace0/image-style --create --type int --set "${BACKGROUND_DE_MODE_XFCE4}" xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor${MONITOR_TYPE}/workspace0/last-image --create --type string --set "${BACKGROUND_DE}" done < <(xrandr | grep -w connected | cut -d" " -f1) } plasma_background(){ [[ -x /usr/bin/plasmashell ]] || return 0 case ${BACKGROUND_DE_MODE} in 0) BACKGROUND_DE_MODE_PLASMA=- ;; 1) BACKGROUND_DE_MODE_PLASMA=1 ;; 2) BACKGROUND_DE_MODE_PLASMA=0 ;; *) BACKGROUND_DE_MODE_PLASMA=- ;; esac #[[ -z ${BACKGROUND_DE_MODE_PLASMA} && ${BACKGROUND_DE_MODE} == 0 ]] && BACKGROUND_DE_MODE_PLASMA=- #[[ -z ${BACKGROUND_DE_MODE_PLASMA} && ${BACKGROUND_DE_MODE} == 1 ]] && BACKGROUND_DE_MODE_PLASMA=1 #[[ -z ${BACKGROUND_DE_MODE_PLASMA} && ${BACKGROUND_DE_MODE} == 2 ]] && BACKGROUND_DE_MODE_PLASMA=0 #[[ -z ${BACKGROUND_DE_MODE_PLASMA} ]] && BACKGROUND_DE_MODE_PLASMA=- if [[ ${BACKGROUND_DE_MODE_PLASMA} == "-" ]]; then kwriteconfig5 --file plasma-org.kde.plasma.desktop-appletsrc --group 'Containments' --group '1' --group 'Wallpaper' --group 'org.kde.image' --group 'General' --key 'FillMode' --delete else kwriteconfig5 --file plasma-org.kde.plasma.desktop-appletsrc --group 'Containments' --group '1' --group 'Wallpaper' --group 'org.kde.image' --group 'General' --key 'FillMode' "${BACKGROUND_DE_MODE_PLASMA}" fi kwriteconfig5 --file plasma-org.kde.plasma.desktop-appletsrc --group 'Containments' --group '1' --key 'wallpaperplugin' "org.kde.image" kwriteconfig5 --file plasma-org.kde.plasma.desktop-appletsrc --group 'Containments' --group '1' --group 'Wallpaper' --group 'org.kde.image' --group 'General' --key 'Image' "file://${BACKGROUND_DE}" } gnome_background(){ [[ -f /usr/share/xsessions/gnome.desktop ]] || return 0 # Определяет способ отрисовки изображения для фона рабочего стола. Возможные значения: «none», «wallpaper», «centered», «scaled», «stretched», «zoom», «spanned». case ${BACKGROUND_DE_MODE} in 0) BACKGROUND_DE_MODE_PANTHEON="zoom" ;; 1) BACKGROUND_DE_MODE_PANTHEON="scaled" ;; 2) BACKGROUND_DE_MODE_PANTHEON="stretched" ;; *) BACKGROUND_DE_MODE_PANTHEON="zoom" ;; esac gsettings set org.gnome.desktop.background picture-uri "file://${BACKGROUND_DE}" gsettings set org.gnome.desktop.background picture-options "${BACKGROUND_DE_MODE_PANTHEON}" } pantheon_background(){ [[ -f /usr/share/xsessions/pantheon.desktop ]] || return 0 # Определяет способ отрисовки изображения для фона рабочего стола. Возможные значения: «none», «wallpaper», «centered», «scaled», «stretched», «zoom», «spanned». case ${BACKGROUND_DE_MODE} in 0) BACKGROUND_DE_MODE_PANTHEON="zoom" ;; 1) BACKGROUND_DE_MODE_PANTHEON="scaled" ;; 2) BACKGROUND_DE_MODE_PANTHEON="stretched" ;; *) BACKGROUND_DE_MODE_PANTHEON="zoom" ;; esac gsettings set org.gnome.desktop.background picture-uri "file://${BACKGROUND_DE}" gsettings set org.gnome.desktop.background picture-options "${BACKGROUND_DE_MODE_PANTHEON}" } lxde_background(){ [[ -x /usr/bin/startlxde ]] || return 0 } lxqt_background(){ [[ -x /usr/bin/startlxqt ]] || return 0 } mate_background(){ [[ -x /usr/bin/startmate ]] || return 0 } cinammon_background(){ [[ -x /usr/bin/startmate ]] || return 0 } if [[ -n ${BACKGROUND_DE} && ${BACKGROUND_DE} != @(none|no|disable) ]]; then if [[ -d ${BACKGROUND_DE} ]]; then BACKGROUND_DE=$(ls -p ${BACKGROUND_DE} | grep -v / | shuf -n 1) elif [[ ${BACKGROUND_DE} =~ ^'#'......$ ]]; then BACKGROUND_HEX=${BACKGROUND_DE} BACKGROUND_DE="/tmp/background-${USER}/${BACKGROUND_DE//#/}.png" install -dm755 ${BACKGROUND_DE%/*} 2>/dev/null convert -size 128x128 xc:"${BACKGROUND_HEX}" "${BACKGROUND_DE}" 2>/dev/null fi [[ -f ${BACKGROUND_DE} ]] && file "${BACKGROUND_DE}" 2>/dev/null | grep -qE 'image|bitmap' || BACKGROUND_DE=/usr/share/backgrounds/background.jpg xfce4_background plasma_background gnome_background pantheon_background lxde_background lxqt_background mate_background cinammon_background fi exit 0 # Для фоновой картинки устанавливаемой feh FEHOPTIONS="-B black -x -Z --scale-down" WPDEFFILE=/usr/share/ublinux/wallpapers/default.jpg FEHKILLSWITCH="while ! ps -A | grep -Eq 'splash|panel|xbindkeys|lightdm-gtk-gr|polybar' ;do sleep 1 ;done ; sleep 7 ; killall feh" [ "$BACKGROUND_DE_MODE" = "2" ] && FEHOPTIONS="-F --zoom fill" # get resolution of primary (or first) monitor XORG_RES=$(LC_ALL=C /usr/bin/xrandr | awk -F" connected primary " '{print $2}' | sed s/+.*// | grep -m1 .) [ -z "$XORG_RES" ] && XORG_RES=$(LC_ALL=C /usr/bin/xrandr | awk -F" connected " '{print $2}' | sed s/+.*// | grep -m1 .) [ -z "$XORG_RES" ] && XORG_RES=1920x1080 # show wallpaper [ -x /usr/bin/feh ] && /usr/bin/feh $FEHOPTIONS -g "$XORG_RES" $(dirname $WPDEFFILE)/default.orig.jpg & # killswitch for feh [ -x /usr/bin/feh ] && bash -c "$FEHKILLSWITCH" & if [ -x /usr/bin/convert ] ;then # resizing wallpaper for monitor resolution (default is proportional on black background) RESIZEOPT="-resize $XORG_RES -background black -gravity center -extent $XORG_RES" [ "$BACKGROUND_DE_MODE" = "1" ] && RESIZEOPT="-resize $XORG_RES!" [ "$BACKGROUND_DE_MODE" = "2" ] && RESIZEOPT="-resize $XORG_RES^ -gravity center -extent $XORG_RES" convert $RESIZEOPT $(dirname $WPDEFFILE)/default.orig.jpg /tmp/background.jpg # Graffiti effects if [ "$GRAFFITI" = "yes" ] ;then [ "$(cmdline_value changes)$(cmdline_value ub.changes)" ] && LABEL=ublinux.png || LABEL=clean.png convert -resize x$(expr $(echo $XORG_RES | awk -Fx '{ print $2 }') / 10) /usr/share/ublinux/graffiti/$LABEL /tmp/logo.png composite -gravity SouthWest /tmp/logo.png /tmp/background.jpg /tmp/background2.jpg mv -f /tmp/background2.jpg /tmp/background.jpg rm -f /tmp/logo.png fi # placing warning about default passwords if [ "$GRAFFITI" != "no" -a -x /usr/bin/composite ] ;then . /usr/lib/ublinux/default A=0 [[ -n ${DM_HINT_PASSWORD} ]] && A=1 [ "$A" = "1" ] && composite -gravity NorthWest /usr/share/ublinux/graffiti/warning.png /tmp/background.jpg /tmp/background2.jpg [ -f /tmp/background2.jpg ] && mv -f /tmp/background2.jpg /tmp/background.jpg fi # replacing default wallpaper [ -f /tmp/background.jpg ] && mv -f /tmp/background.jpg "$WPDEFFILE" [ -d /usr/share/apps/ksplash ] && mkdir -p "/usr/share/apps/ksplash/Themes/Default/$XORG_RES" [ -d /usr/share/apps/ksplash ] && convert "$WPDEFFILE" "/usr/share/apps/ksplash/Themes/Default/$XORG_RES/background.png" fi