#!/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}/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 0 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(){ # Метод определения разрешения №1, подходит для свободных драйверов KMS # Без драйверов по VGA не находит разрешение local max_mode= # Максимальное разрешение из всех мониторов local video_output= video_name= video_modes= max_mode= line_mode= pixel_line_mode= pixel_max_mode= pixel_max_mode_all= 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_modes="${video_output%/*}/modes" [[ -f ${video_modes} ]] || continue max_mode="0" while IFS= read -u4 -r 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 4< ${video_modes} MONITORS[${video_name}]=${max_mode} fi done 3< <(find /sys/class/drm/*/ -type f -name status -print0 2>/dev/null) # Метод определения разрешения №2 # из конфига /etc/ublinux/video по статическим заданным разрешениям [[ -n "${XORG_MONITOR[@]}" ]] && declare -n MONITOR=XORG_MONITOR [[ -n "${XRANDR_MONITOR[@]}" ]] && declare -n MONITOR=XRANDR_MONITOR 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 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 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}) [[ "${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} fi done 3< <(tr ',' '\n' <<< "${MONITOR[${VIDEO_PORT}]}") done [[ -n ${RESOLUTION_MAX} ]] && 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 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') } 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 [[ -n ${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)" 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 [[ -n ${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 [[ ! -d ${wallpapers_dst} ]]; then mkdir -p $(readlink ${wallpapers_dst}) || mkdir -p "${wallpapers_dst}" fi #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 xres) && [[ -n ${xres} ]] && RESOLUTION=${xres} # Определение разрешения экрана [[ -n $1 ]] && [[ $1 =~ ^([[:digit:]]+'x'[[:digit:]]+)$ ]] && RESOLUTION=${BASH_REMARCH[1]} [[ ${RESOLUTION} == "" ]] && get_max_resolution # Если не обнаружено ни одно разрешение, то статическое из /usr/lib/ublinux/default [[ ${RESOLUTION} == "" ]] && RESOLUTION=${BACKGROUND_RES} [[ ${RESOLUTION} == "" ]] && RESOLUTION="1920x1080" [[ ${RESOLUTION} == "" ]] && echo "ERROR: resolution not detect" && exit 1 # Определение редакции ОС [[ -z $2 ]] && edition_os=$(cat /usr/lib/os-release | grep VERSION_CODENAME | cut -d"=" -f2 2>/dev/null) || edition_os=$2 width= hight= width="${RESOLUTION%x*}" hight="${RESOLUTION#*x}" #echo "------ ${width} on ${hight} ------- ${edition_os}" # Вычисление соотношения сторон экрана # ratio=$(echo "scale=2;${width}/${hight}" | bc) 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" # elif [[ "$(echo "${ratio}==1.25" | bc -l)" == 1 ]]; then elif [[ "${ratio}" == "1.25" ]]; then fname_ratio="5:4" # elif [[ "$(echo "${ratio}==1.77" | bc -l)" == 1 ]]; then elif [[ "${ratio}" == "1.77" ]]; then fname_ratio="16:9" # elif [[ "$(echo "${ratio}==1.60" | bc -l)" == 1 ]]; then elif [[ "${ratio}" == "1.60" ]]; then fname_ratio="16:10" # elif [[ "$(echo "${ratio}==2.38" | bc -l)" == 1 ]]; then elif [[ "${ratio}" == "2.38" ]]; then fname_ratio="21:9" # elif [[ "$(echo "${ratio}==2.37" | bc -l)" == 1 ]]; then elif [[ "${ratio}" == "2.37" ]]; then fname_ratio="21:9" # elif [[ "$(echo "${ratio}==2.40" | bc -l)" == 1 ]]; then elif [[ "${ratio}" == "2.40" ]]; then fname_ratio="12:5" # elif [[ "$(echo "${ratio}==1.89" | bc -l)" == 1 ]]; then elif [[ "${ratio}" == "1.89" ]]; then fname_ratio="256:135" # elif [[ "$(echo "${ratio}==2.89" | bc -l)" == 1 ]]; then elif [[ "${ratio}" == "2.89" ]]; then fname_ratio="1024:429" # elif [[ "$(echo "${ratio}==1.85" | bc -l)" == 1 ]]; then elif [[ "${ratio}" == "1.85" ]]; 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 1; } 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} && -n ${DM_HINT_PASSWORD} ]] && 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}