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/10-brand-backgrounds

460 lines
25 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
##
## ./script ${RESOLUTION} ${VERSION_CODENAME} ${STATE_MODE}
## RESOLUTION:
## 1024x768 #1.33 (4:3)
## 2048x1536 #1.33 (4:3)
## 1440x1080 #1.33 (4:3)
## 2560x2048 #1.25 (5:4)
## 1920x1080 #1.77 (16:9)
## 3840x2160 #1.77 (16:9)
## 3440x1440 #2.38 (21:9)
## 1440x900 #1.60 (16:10)
## 2560x1600 #1.60 (16:10)
## 2560x1440 #1.77 (19:10) 2K QHD 1440p
## 3840x2160 #1.77 (16:9) 4K UHD 2160p
## 3840x1600 #2.40 (12:5) 4K UHD 1600p
## 4096x2160 #1.89 (256:135) 4K UHD 2160p
## 4096x1416 #2.89 (1024:429) 4K UHD 1416p
## 3996x2160 #1.85 (999:540) 4K UHD 2160p
## 5120x2160 #2.37 (:) 5K UHD 2160p
## 7680x4320 #1.77(16:9 17:9 21:9) 8K UHD 4320p
## 10240x4320 #2.37 (21:9) 10K 4320p
## VERSION_CODENAME:
## ublinux_db
## ublinux_de
## ublinux_edu
## ublinux_srv
## ublinux_exp
## ublinux_de_adara
## ublinux_srv_adara
## ublinux_de_sibsutis
## ublinux_edu_sibsutis
## ublinux_srv_sibsutis
## ublinux_liveoffice
## ublinux_unknown
## STATE_MODE
## "changes" # Полное сохранение ub.mode=changes
## "toxzm" or "machines" # Сохранение в модуль ub.mode=toxzm ub.mode=machines
## "/" # Песочница с сохранением профиля пользователя ub.mode= ; ub.home=/ublinux-data/homes
## "" # Полная песочница RAM ub.mode= (clean); ub.home=
## "" # Полная песочница HDD ub.mode=clear; ub.home=
## При запуске в ручную, получим изображения в каталоге: /tmp/ublinux_bg
ENABLED=yes
[[ ${ENABLED} == "yes" ]] || exit 0
DEBUGMODE=no
. /usr/lib/ublinux/functions
. /usr/lib/ublinux/default
debug_mode "$0" "$@"
SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/users; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/desktop; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/theme; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/video; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
#ROOTDIR=${PWD}
[[ -n $1 ]] && [[ -n $2 ]] && BUILD_MANUAL=yes
[[ -z ${BUILD_MANUAL} && ${DISPLAYMANAGER} == "none" ]] && exit
[[ -z ${BUILD_MANUAL} && ${BACKGROUND_DE} == @(none|no|disable) && ${BACKGROUND_DM} == @(none|no|disable) ]] && exit
source_img_dir=${ROOTDIR}/usr/share/ublinux/backgrounds/source #Каталог с исходниками изображений
wallpapers_tmp=${ROOTDIR}/tmp/ublinux_bg #Каталог скомпиллированных изображений
wallpapers_dst=${ROOTDIR}/usr/share/backgrounds/ublinux #Каталог скомпиллированных изображений
default_de_img=${wallpapers_dst%/*}/background.jpg
default_dm_img=${wallpapers_dst%/*}/dm.jpg
bg_desktop_basic=bg_db.png # Фон для Desktop Basic
bg_desktop_enterprise=bg_de.png # Фон для Desktop Enterprise
bg_education=bg_edu.png # Фон для Education
bg_expert=bg_exp.png # Фон для Expert
bg_server=bg_srv.png # Фон для Server
bg_liveoffice=bg_lo.png # Фон для LiveOfice
shadow_img=shadow.png # Затенение
hex_img=hex.png # Сетка из шестигранников
transparent=transparent.png # Изображение прозрачный пиксель
logo_img=logo.png # Логотип исходный
logo_desktop_basic=logo_db.png # Изображение редакции дистрибутива
logo_desktop_enterprise=logo_de.png # Изображение редакции дистрибутива
logo_education=logo_edu.png # Изображение редакции дистрибутива
logo_expert=logo_exp.png # *Deprecated* Изображение редакции дистрибутива
logo_server=logo_srv.png # Изображение редакции дистрибутива
logo_light=logo_light.png # Изображение свечения логотипа
logo_adara=logo_adara.png # Изображение редакции дистрибутива Adara
logo_sibsutis=logo_sibsutis.png # Изображение редакции дистрибутива SibSUTIS
logo_liveoffice=logo_liveoffice.png # Изображение редакции дистрибутива LiveOffice
logo_clue_img=logo_clue.png # Имя склееного логотипа с редакцией дистрибутива
img_state_bg_de=bg_icon_state_de.png # Фон для иконки режима сохранения (рабочий стол)
img_state_bg_dm=bg_icon_state_dm.png # Фон для иконки режима сохранения (гритер)
img_nosave=icon_state_ro.png # Иконка для режима "без сохранения"
img_fullsave=icon_state_rw.png # Иконка для режима "полное сохранение"
img_homesave=icon_state_uw.png # Иконка для режима "сохранение home"
img_modulesave=icon_state_mw.png # Иконка для режима "сохранение в модуль"
passwd_block_img=passwd_text.png # Изображение с текстом для FirstSart
wp_de_filename=tmp_wp_de.jpg # Имя файла обоев
wp_dm_filename=tmp_wp_dm.jpg # Имя файла фона гритера
shadow_level=175 # Степень затенения обоев рабочего стола в %, где 100 - исходная яркость, <100 - светлее, >100 - темнее
declare -A monitors
RESOLUTION=
# Функция получения всех видеовыходов с максимальными разрешениями
# В теле основном:
# declare -A monitors
# Входной параметр: имя переменной массива
# get_max_resolution "monitors"
# Выходной параметр: заполненный массив, вида
# card0-HDMI-A-1:1920x2000
# card0-DP-1:1920x1080
# card0-VGA-1:1280x720
# RESOLUTION:1920x2000
get_max_resolution() {
local max_mode # Максимальное разрешение из всех мониторов
# Метод определения разрешения №1, подходит для свободных драйверов KMS
# Без драйверов по VGA не находит разрешение
if ls /sys/class/drm/*/status &>/dev/null; then
for video_output in /sys/class/drm/*/status; do
if [[ $(cat ${video_output}) == "connected" ]]; then
video_name="${video_output%/*}"; video_name="${video_name##*/}"
video_modes="${video_output%/*}/modes"
[[ -f ${video_modes} ]] || break
max_mode="0"
while read line_mode; do
pixel_line_mode=$(echo ${line_mode} | tr -d "i" | tr x "*" | bc)
[[ "${line_mode}" == "1440x900" ]] && pixel_line_mode=$( echo ${pixel_line_mode} + 14721 | bc) # fix 1440x900 > 1280x1024
pixel_max_mode=$(echo ${max_mode} | tr -d "i" | tr x "*" | bc)
[[ ${pixel_line_mode} -gt ${pixel_max_mode} ]] && max_mode=$(echo ${line_mode} | tr -d "i")
pixel_max_mode_all=$(echo ${RESOLUTION} | tr -d "i" | tr x "*" | bc)
[[ ${pixel_line_mode} -gt ${pixel_max_mode_all} ]] && RESOLUTION=$(echo ${line_mode} | tr -d "i")
done < ${video_modes}
monitors[${video_name}]=${max_mode}
fi
done
fi
# Метод определения разрешения №2
# из конфига /etc/ublinux/video по статическим заданным разрешениям
[[ -n "${XORG_MONITOR[@]}" ]] && declare -n MONITOR=XORG_MONITOR
[[ -n "${XRANDR_MONITOR[@]}" ]] && declare -n MONITOR=XRANDR_MONITOR
if [[ -n "${MONITOR[@]}" ]]; then
for VIDEO_PORT in "${!MONITOR[@]}"; do
while read VIDEO_PORT_PARAM; do
if egrep -iq "^[0-9]*x[0-9]*$|^[0-9]*x[0-9]*x[0-9]*$" <<< "${VIDEO_PORT_PARAM}"; then
RESOLUTION="$(sed 's/\([0-9]*\*[0-9]*\) .*/\1/' <<< ${VIDEO_PORT_PARAM//x/*})"
# fix 1440x900 > 1280x1024
[[ "${RESOLUTION}" == "1440*900" ]] && pixel_line_mode=$(bc <<< "${RESOLUTION}+14721") || pixel_line_mode=$(bc <<< ${RESOLUTION})
[[ ${pixel_line_mode} -gt ${pixel_max_mode} ]] && pixel_max_mode=${pixel_line_mode} && RESOLUTION_MAX=${RESOLUTION}
fi
done < <(tr ',' '\n' <<< "${MONITOR[${VIDEO_PORT}]}")
done
RESOLUTION=${RESOLUTION_MAX//\*/x}
fi
# Метод определения разрешения №99, при условии запущенного lightdm
local PATH_XAUTHORITY="/var/lib/lightdm/.Xauthority"
[[ -z ${RESOLUTION} && -f ${PATH_XAUTHORITY} && -n $(ls /tmp/.X11-unix/X* 2>/dev/null) ]] && \
RESOLUTION=$(XAUTHORITY=${PATH_XAUTHORITY} xrandr -d $(ls /tmp/.X11-unix | tr 'X' ':' | head -n 1) 2>/dev/null | grep "*" | xargs | cut -d" " -f1)
# $(xrandr -d :0 --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p')
# Если не обнаружено ни одно разрешение, то статическое из /usr/lib/ublinux/default
[[ -z ${RESOLUTION} ]] && RESOLUTION=${BACKGROUND_RES}
[[ -z ${RESOLUTION} ]] && RESOLUTION="1920x1080"
}
build_logo_ublinux_all(){
# Склейка логотипа UBLinux со свечением
[[ -n ${logo_light} ]] && convert ${source_img_dir}/$logo_light ${source_img_dir}/$logo_img -gravity center -background none +smush -710 ${wallpapers_tmp}/tmp_$logo_clue_img \
|| cp ${source_img_dir}/$logo_img ${wallpapers_tmp}/tmp_$logo_clue_img
# Конвеер вставки логотипа редакции ОС
[[ -n ${edition_img} ]] && composite -geometry $geometry_edition_wp -gravity east ${source_img_dir}/$edition_img ${wallpapers_tmp}/tmp_$logo_clue_img ${wallpapers_tmp}/tmp_$logo_clue_img
# Конвеер вставки логотипа суббренда
if [ ${geometry_adara_wp} ]; then
img_logo_width=$(identify ${wallpapers_tmp}/tmp_$logo_clue_img | cut -d" " -f3 | cut -d"x" -f1)
img_adara_width=$(identify ${source_img_dir}/$logo_adara | cut -d" " -f3 | cut -d"x" -f1)
let img_logo_width=($img_logo_width+$img_adara_width)
convert ${wallpapers_tmp}/tmp_$logo_clue_img -gravity west -background none -extent $img_logo_width'x' ${wallpapers_tmp}/tmp_$logo_clue_img
composite -geometry $geometry_adara_wp -gravity east ${source_img_dir}/$logo_adara ${wallpapers_tmp}/tmp_$logo_clue_img ${wallpapers_tmp}/tmp_$logo_clue_img
elif [ ${geometry_sibsutis_wp} ]; then
img_logo_width=$(identify ${wallpapers_tmp}/tmp_$logo_clue_img | cut -d" " -f3 | cut -d"x" -f1)
convert ${wallpapers_tmp}/tmp_$logo_clue_img -gravity west -background none -extent $img_logo_width'x' ${wallpapers_tmp}/tmp_$logo_clue_img
composite -geometry $geometry_sibsutis_wp -gravity north ${source_img_dir}/$logo_sibsutis ${wallpapers_tmp}/tmp_$logo_clue_img ${wallpapers_tmp}/tmp_$logo_clue_img
fi
}
build_background_all(){
# Наложение градиентного затемнения DE
convert -composite $background ${source_img_dir}/$shadow_img ${wallpapers_tmp}/${wp_de_filename}
# Наложение градиентного затемнения DM
cp ${wallpapers_tmp}/${wp_de_filename} ${wallpapers_tmp}/${wp_dm_filename}
}
build_background_de(){
# Наложение сетки шестигранников DE
convert -composite ${wallpapers_tmp}/${wp_de_filename} ${source_img_dir}/$hex_img ${wallpapers_tmp}/${wp_de_filename}
# Конвеер вставки объединенного логотипа на фон DE
composite -geometry $geometry_logo_wp -gravity west ${wallpapers_tmp}/tmp_$logo_clue_img ${wallpapers_tmp}/${wp_de_filename} ${wallpapers_tmp}/${wp_de_filename}
# Затенения обоев рабочего стола
convert ${wallpapers_tmp}/${wp_de_filename} -level 0,$shadow_level% ${wallpapers_tmp}/${wp_de_filename}
}
build_background_dm(){
# Вычисление коэффициента скейлинга
img_hight=$(identify $background | cut -d" " -f3 | cut -d"x" -f2)
ratio_scale=$(echo "scale=2;$img_hight/${hight}" | bc)
# echo RS=${ratio_scale}
tmp_logo_clue_hight=$(identify ${wallpapers_tmp}/tmp_$logo_clue_img | cut -d" " -f3 | cut -d"x" -f2)
nsize_logo_clue_hight=$(echo "scale=0;$tmp_logo_clue_hight/${ratio_scale}" | bc)
# echo RSCF Logo=$nsize_logo_clue_hight
convert ${wallpapers_tmp}/tmp_$logo_clue_img -resize x$nsize_logo_clue_hight ${wallpapers_tmp}/tmp_dm_$logo_clue_img
convert ${wallpapers_tmp}/tmp_dm_$logo_clue_img -resize 35% ${wallpapers_tmp}/tmp_dm_$logo_clue_img
x_shift=$(echo "scale=0;150/${ratio_scale}" | bc)
y_shift=$(echo "scale=0;170/${ratio_scale}" | bc)
# echo "LOGO $x_shift on $y_shift px"
# Конвеер вставки объединенного уменьшенного логотипа на фон DM
composite -geometry +$x_shift+$y_shift ${wallpapers_tmp}/tmp_dm_$logo_clue_img ${wallpapers_tmp}/${wp_dm_filename} ${wallpapers_tmp}/${wp_dm_filename}
}
insert_background_dm_txtpass(){
# Вычисление коэффициента скейлинга
img_hight=$(identify $background | cut -d" " -f3 | cut -d"x" -f2)
ratio_scale=$(echo "scale=2;$img_hight/${hight}" | bc)
tmp_passwd_text_hight=$(identify ${source_img_dir}/$passwd_block_img | cut -d" " -f3 | cut -d"x" -f2)
nsize_passwd_text_hight=$(echo "scale=0;$tmp_passwd_text_hight/${ratio_scale}" | bc)
x_shift_text=$(echo "scale=0;0/${ratio_scale}" | bc)
y_shift_text=$(echo "scale=0;370/${ratio_scale}" | bc)
# echo "TXT $x_shift_text on $y_shift_text px"
# echo RSCF first=$nsize_passwd_text_hight
convert ${source_img_dir}/$passwd_block_img -resize x$nsize_passwd_text_hight -colorspace RGB ${wallpapers_tmp}/tmp_$passwd_block_img
composite -geometry +$x_shift_text+$y_shift_text -gravity NorthEast ${wallpapers_tmp}/tmp_$passwd_block_img $default_dm_img $default_dm_img
}
# $1 Файл иконки для вставки
insert_background_icon(){
# Вычисление коэффициента скейлинга
img_hight=$(identify $background | cut -d" " -f3 | cut -d"x" -f2)
ratio_scale=$(echo "scale=2;$img_hight/${hight}" | bc)
# DM
# bg icon
tmp_state_icon_bg_hight=$(identify ${source_img_dir}/$img_state_bg_dm | cut -d" " -f3 | cut -d"x" -f2)
nsize_state_icon_bg_hight=$(echo "scale=0;$tmp_state_icon_bg_hight/${ratio_scale}" | bc)
x_shift_img_bg=$(echo "scale=0;-160/${ratio_scale}" | bc)
y_shift_img_bg=$(echo "scale=0;170/${ratio_scale}" | bc)
convert ${source_img_dir}/$img_state_bg_dm -resize x$nsize_state_icon_bg_hight -colorspace RGB ${wallpapers_tmp}/tmp_$img_state_bg_dm
composite -geometry +$x_shift_img_bg+$y_shift_img_bg -gravity NorthEast ${wallpapers_tmp}/tmp_$img_state_bg_dm $default_dm_img $default_dm_img
# icon
tmp_state_icon_hight=$(identify ${source_img_dir}/$1 | cut -d" " -f3 | cut -d"x" -f2)
nsize_state_icon_hight=$(echo "scale=0;$tmp_state_icon_hight/(${ratio_scale}*1.5)" | bc)
x_shift_img=$(echo "scale=0;120/${ratio_scale}" | bc)
y_shift_img=$(echo "scale=0;168/${ratio_scale}" | bc)
convert ${source_img_dir}/$1 -resize x$nsize_state_icon_hight -colorspace sRGB ${wallpapers_tmp}/tmp_state.png
composite -geometry +$x_shift_img+$y_shift_img -gravity NorthEast ${wallpapers_tmp}/tmp_state.png $default_dm_img $default_dm_img
# DE
# bg icon
tmp_state_icon_bg_hight=$(identify ${source_img_dir}/$img_state_bg_de | cut -d" " -f3 | cut -d"x" -f2)
nsize_state_icon_bg_hight=$(echo "scale=0;$tmp_state_icon_bg_hight/${ratio_scale}" | bc)
x_shift_img_bg=$(echo "scale=0;1785/${ratio_scale}" | bc)
y_shift_img_bg=$(echo "scale=0;0/${ratio_scale}" | bc)
convert ${source_img_dir}/$img_state_bg_de -resize x$nsize_state_icon_bg_hight -colorspace RGB ${wallpapers_tmp}/tmp_$img_state_bg_de
composite -geometry +$x_shift_img_bg+$y_shift_img_bg -gravity NorthWest ${wallpapers_tmp}/tmp_$img_state_bg_de $default_de_img $default_de_img
# icon
tmp_state_icon_hight=$(identify ${source_img_dir}/$1 | cut -d" " -f3 | cut -d"x" -f2)
nsize_state_icon_hight=$(echo "scale=0;$tmp_state_icon_hight/(${ratio_scale}*1.5)" | bc)
x_shift_img=$(echo "scale=0;1940/${ratio_scale}" | bc)
y_shift_img=$(echo "scale=0;50/${ratio_scale}" | bc)
convert ${source_img_dir}/$1 -resize x$nsize_state_icon_hight -colorspace sRGB ${wallpapers_tmp}/tmp_state.png
composite -geometry +$x_shift_img+$y_shift_img -gravity NorthWest ${wallpapers_tmp}/tmp_state.png $default_de_img $default_de_img
}
# Test get resolution || Проверить массив мониторов с разрешениями
# get_max_resolution "array_monitor_modes"
# for key in "${!monitors[@]}"; do
# echo "${key}:${monitors[${key}]}"
# done
# echo "${RESOLUTION}"
mkdir -p ${wallpapers_tmp}
# [[ -L ${wallpapers_dst} ]] || mkdir -p ${wallpapers_dst}
if [[ ! -e ${wallpapers_dst} ]]; then
mkdir -p $(readlink ${wallpapers_dst}) || mkdir -p ${wallpapers_dst}
fi
grep -q xres= /proc/cmdline && RESOLUTION=$(cat /proc/cmdline | awk -F xres= '{print $2}' | awk '{print $1}')
# xres=$(cmdline_value desktop) && [[ ! -z ${xres} ]] && RESOLUTION=${xres}
# Определение разрешения экрана
[[ -z $1 ]] || RESOLUTION=$1
[[ -z "${RESOLUTION}" ]] && get_max_resolution
[[ -z "${RESOLUTION}" ]] && echo "ERROR: resolution not detect" && exit 1
# Определение редакции ОС
[[ -z $2 ]] && edition_os=$(cat /etc/os-release | grep VERSION_CODENAME | cut -d"=" -f2 2>/dev/null) || edition_os=$2
width=${RESOLUTION%x*}; width=${width:-1920}
hight=${RESOLUTION#*x}; hight=${hight:-1080}
#echo "${width} on ${hight}"
# Вычисление соотношения сторон экрана
ratio=$(bc <<< "scale=2;${width}/${hight}")
if [[ "$(bc -l <<< "${ratio}==1.33")" == 1 ]]; then
fname_ratio="4:3"
elif [[ "$(bc -l <<< "${ratio}==1.25")" == 1 ]]; then
fname_ratio="5:4"
elif [[ "$(bc -l <<< "${ratio}==1.77")" == 1 ]]; then
fname_ratio="16:9"
elif [[ "$(bc -l <<< "${ratio}==1.6")" == 1 ]]; then
fname_ratio="16:10"
elif [[ "$(bc -l <<< "${ratio}==2.38")" == 1 ]]; then
fname_ratio="21:9"
elif [[ "$(bc -l <<< "${ratio}==2.37")" == 1 ]]; then
fname_ratio="21:9"
elif [[ "$(bc -l <<< "${ratio}==2.40")" == 1 ]]; then
fname_ratio="12:5"
elif [[ "$(bc -l <<< "${ratio}==1.89")" == 1 ]]; then
fname_ratio="256:135"
elif [[ "$(bc -l <<< "${ratio}==2.89")" == 1 ]]; then
fname_ratio="1024:429"
elif [[ "$(bc -l <<< "${ratio}==1.85")" == 1 ]]; then
fname_ratio="999:540"
else
fname_ratio="unknown"
fi
#echo "==> ${width}x${hight} :: ${ratio} :: ${fname_ratio}" && exit 1
# Установка значений переменных для графических ресурсов, исходя из типа редакции ОС
geometry_logo_wp=+69-52
case "${edition_os}" in
ublinux_db)
background=${source_img_dir}/$bg_desktop_basic
edition_img=${logo_desktop_basic}
geometry_edition_wp=+86+256
;;
ublinux_de)
background=${source_img_dir}/$bg_desktop_enterprise
edition_img=${logo_desktop_enterprise}
geometry_edition_wp=+86+256
;;
ublinux_edu)
background=${source_img_dir}/$bg_education
edition_img=${logo_education}
geometry_edition_wp=+70+256
;;
ublinux_srv)
background=${source_img_dir}/${bg_server}
edition_img=${logo_server}
geometry_edition_wp=+86+256
;;
ublinux_exp)
background=${source_img_dir}/$bg_exp
edition_img=${logo_expert}
geometry_edition_wp=+72+256
;;
ublinux_de_adara)
background=${source_img_dir}/$bg_desktop_enterprise
edition_img=${logo_desktop_enterprise}
geometry_edition_wp=+86+256
geometry_adara_wp=+130+42
;;
ublinux_srv_adara)
background=${source_img_dir}/${bg_server}
edition_img=${logo_server}
geometry_edition_wp=+86+256
geometry_adara_wp=+130+42
;;
ublinux_de_sibsutis)
background=${source_img_dir}/$bg_desktop_enterprise
edition_img=${logo_desktop_enterprise}
geometry_edition_wp=+86+256
geometry_sibsutis_wp=+470+166
;;
ublinux_edu_sibsutis)
background=${source_img_dir}/$bg_education
edition_img=${logo_education}
geometry_edition_wp=+70+256
geometry_sibsutis_wp=+470+166
;;
ublinux_srv_sibsutis)
background=${source_img_dir}/${bg_server}
edition_img=${logo_server}
geometry_edition_wp=+86+256
geometry_sibsutis_wp=+470+166
;;
ublinux_liveoffice)
background=${source_img_dir}/$bg_liveoffice
logo_img=${logo_liveoffice}
geometry_logo_wp=+260-130
unset logo_light
;;
ublinux_unknown | *)
background=${source_img_dir}/$bg_desktop_basic
edition_img=${logo_desktop_basic}
geometry_edition_wp=+86+256
;;
esac
CHECK_BOOT_FILE=$(find ${wallpapers_dst}/ -name "${edition_os}_boot_${fname_ratio}_${RESOLUTION}.jpg" | wc -l)
CHECK_BACKGROUND_FILE=$(find ${wallpapers_dst}/ -name "${edition_os}_background_${fname_ratio}_${RESOLUTION}.jpg" | wc -l)
if [[ ${CHECK_BOOT_FILE} -eq 0 ]] || [[ ${CHECK_BACKGROUND_FILE} -eq 0 ]]; then
[[ ! -x /usr/bin/composite ]] && [[ ! -x /usr/bin/convert ]] && echo "Error: not fount /usr/bin/composite or /usr/bin/convert" && exit 0
build_logo_ublinux_all
build_background_all
build_background_de
# Изменение разрешения фонов DM DE
case ${fname_ratio} in
"4:3" | "5:4" | "16:10" ) # Изменить размер по высоте (hight)
for filename in ${wp_de_filename} ${wp_dm_filename}; do
convert -resize x${hight} ${wallpapers_tmp}/${filename} ${wallpapers_tmp}/${filename}
convert -crop ${width}\x+0+0 ${wallpapers_tmp}/${filename} ${wallpapers_tmp}/${filename}
done
;;
"21:9") # Изменить размер по ширине (width)
for filename in ${wp_de_filename} ${wp_dm_filename}; do
convert -resize ${width} ${wallpapers_tmp}/${filename} ${wallpapers_tmp}/${filename}
out_img_hight=$(identify ${wallpapers_tmp}/${filename} | cut -d" " -f3 | cut -d"x" -f2)
let crop_top=($out_img_hight-${hight})/2
convert -crop x${hight}+0+$crop_top ${wallpapers_tmp}/${filename} ${wallpapers_tmp}/${filename}
done
;;
"16:9") # Изменить размер пропорционально
for filename in ${wp_de_filename} ${wp_dm_filename}; do
convert -resize x${hight} ${wallpapers_tmp}/${filename} ${wallpapers_tmp}/${filename}
done
;;
*) # Изменить размер пропорционально
for filename in ${wp_de_filename} ${wp_dm_filename}; do
convert -resize x${hight} ${wallpapers_tmp}/${filename} ${wallpapers_tmp}/${filename}
done
;;
esac
build_background_dm
[[ -z ${BUILD_MANUAL} ]] && mv ${wallpapers_tmp}/${wp_de_filename} ${wallpapers_dst}/${edition_os}_background_${fname_ratio}_${RESOLUTION}.jpg || mv ${wallpapers_tmp}/${wp_de_filename} ${wallpapers_tmp}/${edition_os}_background_${fname_ratio}_${RESOLUTION}.jpg
[[ ${BUILD_MANUAL} ]] && mogrify -format png -write ${wallpapers_tmp}/${edition_os}_boot_${fname_ratio}_${RESOLUTION}.png ${wallpapers_tmp}/${wp_dm_filename}
[[ -z ${BUILD_MANUAL} ]] && mv ${wallpapers_tmp}/${wp_dm_filename} ${wallpapers_dst}/${edition_os}_boot_${fname_ratio}_${RESOLUTION}.jpg || mv ${wallpapers_tmp}/${wp_dm_filename} ${wallpapers_tmp}/${edition_os}_boot_${fname_ratio}_${RESOLUTION}.jpg
fi
[[ -z ${BUILD_MANUAL} ]] && cp -pf ${wallpapers_dst}/${edition_os}_background_${fname_ratio}_${RESOLUTION}.jpg $default_de_img
[[ -z ${BUILD_MANUAL} ]] && cp -pf ${wallpapers_dst}/${edition_os}_boot_${fname_ratio}_${RESOLUTION}.jpg $default_dm_img
# Если пароли по умолчанию ublinux, то вывести подсказку пароля
[[ -z ${BUILD_MANUAL} ]] && grep -q "^root:${DEFAULTROOTPASSWD}:" /etc/shadow && grep -q "^$(getent passwd "${ADMUID}" | cut -d: -f1):${DEFAULTPASSWD}:" /etc/shadow && insert_background_dm_txtpass
if [[ -z ${BUILD_MANUAL} ]] && [[ ${GRAFFITI} != @(none|no|disable) ]]; then
[[ -z $3 ]] && state_mode="$(cmdline_value ub.mode)" || state_mode=$3
[[ -z $3 ]] && state_home="$(cmdline_value ub.home)" || state_home=$3
# Полное сохранение ub.mode=changes
if [[ ${state_mode} =~ ^"changes"$ ]]; then
insert_background_icon $img_fullsave
# Сохранение в модуль ub.mode=toxzm ub.mode=machines
elif [[ ${state_mode} =~ ^("toxzm"|"machines")$ ]]; then
insert_background_icon ${img_modulesave}
# Песочница с сохранением профиля пользователя ub.mode= ; ub.home=/ublinux-data/homes
elif [[ $state_home =~ ^"/" ]]; then
insert_background_icon ${img_homesave}
# Полная песочница RAM ub.mode= (clean); ub.home=
# Полная песочница HDD ub.mode=clear; ub.home=
else
insert_background_icon ${img_nosave}
fi
fi
[[ -n ${BUILD_MANUAL} ]] || rm -rdf ${wallpapers_tmp}