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