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.
166 lines
8.4 KiB
166 lines
8.4 KiB
#!/usr/bin/env bash
|
|
#
|
|
# Author: Dmitry Razumov <asmeron@ublinux.com>
|
|
# Copyright (c) 2021-2025 UBLinux <support@ublinux.com>
|
|
#
|
|
# Used as a source
|
|
|
|
ENABLED=yes
|
|
[[ ${ENABLED} == "yes" ]] || { return 0 2>/dev/null && return 0 || exit 0; }
|
|
|
|
DEFAULT_CONF=$(< /usr/lib/ublinux/default)
|
|
[[ ${DEFAULT_CONF} =~ (^|$'\n')[[:blank:]]*SYSCONF=([^$|$'\n']+)[[:blank:]]*($|$'\n') ]] && SYSCONF=${BASH_REMATCH[2]} || SYSCONF="/etc/sysconf"
|
|
|
|
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
|
|
|
|
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
|
|
}
|
|
|
|
################
|
|
##### MAIN #####
|
|
################
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
# Для фоновой картинки устанавливаемой 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
|
|
|