diff --git a/ublinux/functions b/ublinux/functions index 6ddb975..1a3ee57 100755 --- a/ublinux/functions +++ b/ublinux/functions @@ -1,13 +1,12 @@ -#!/bin/bash -# Make from ini file text file with strings like [SECTION]Name=Value -# $1 - input filename -# stdout - result file +#!/usr/bin/env bash + export TEXTDOMAINDIR=/usr/share/locale export TEXTDOMAIN=ublinux_functions - -function ini2simple() -{ +# Make from ini file text file with strings like [SECTION]Name=Value +# $1 - input filename +# stdout - result file +function ini2simple(){ SECTION='[]' cat $1 | while read a ;do [ "$a" = "" ] && continue @@ -22,8 +21,7 @@ function ini2simple() # Restore ini file from text file with strings like [SECTION]Name=Value # $1 - input filename # stdout - result file -function simple2ini() -{ +function simple2ini(){ LASTSECTION='[]' cat $1 | while read a ;do SECTION=${a%%\]*}']' @@ -39,8 +37,7 @@ function simple2ini() # It include string from $2 file and apply to $1 file # $1 - base file # $2 - included file -function apply2simple() -{ +function apply2simple(){ cat "$2" | while read a ;do SECTION=${a%%\]*} SECTION=${SECTION#\[} @@ -78,8 +75,7 @@ function apply2simple() # It include string from $2 ini file and apply to $1 ini file # $1 - base file # $2 - included file -function concatenate_ini() -{ +function concatenate_ini(){ [ -f "$1" -a -f "$2" ] || return 1 ini2simple "$1" >"$1.tmp" ini2simple "$2" >"$2.tmp" @@ -88,52 +84,49 @@ function concatenate_ini() rm -f "$1.tmp" "$2.tmp" } -detectDE() -{ - if [ x"$KDE_FULL_SESSION" = x"true" ]; then SESSION=kde - elif [ x"$XDG_CURRENT_DESKTOP" = x"XFCE" ]; then SESSION=xfce - elif [ x"$DESKTOP_SESSION" = x"LXDE" ]; then SESSION=lxde - elif [ x"$XDG_CURRENT_DESKTOP" = x"LXQt" ]; then SESSION=lxqt - elif [ x"$DESKTOP_SESSION" = x"i3" ]; then SESSION=i3 - elif [ x"$XDG_CURRENT_DESKTOP" = x"i3" ]; then SESSION=i3 - elif [ x"$DESKTOP_SESSION" = x"i3term" ]; then SESSION=i3term - elif [ x"$XDG_CURRENT_DESKTOP" = x"i3term" ]; then SESSION=i3term - elif [ x"$XDG_CURRENT_DESKTOP" = x"MATE" ]; then SESSION=mate - fi - if [ -z "$SESSION" ]; then - ps -A | grep -q "xfce4-session" && SESSION=xfce - ps -A | grep -q "kdeinit" && SESSION=kde +detectDE(){ + [[ -z ${SESSION} && ${KDE_FULL_SESSION} == true ]] && SESSION=kde + [[ -z ${SESSION} && ${XDG_CURRENT_DESKTOP} == XFCE ]] && SESSION=xfce + [[ -z ${SESSION} && ${DESKTOP_SESSION} == LXDE ]] && SESSION=lxde + [[ -z ${SESSION} && ${XDG_CURRENT_DESKTOP} == LXQt ]] && SESSION=lxqt + [[ -z ${SESSION} && ${DESKTOP_SESSION} == i3 ]] && SESSION=i3 + [[ -z ${SESSION} && ${XDG_CURRENT_DESKTOP} == i3 ]] && SESSION=i3 + [[ -z ${SESSION} && ${DESKTOP_SESSION} == i3term ]] && SESSION=i3term + [[ -z ${SESSION} && ${XDG_CURRENT_DESKTOP} == i3term ]] && SESSION=i3term + [[ -z ${SESSION} && ${XDG_CURRENT_DESKTOP} == MATE ]] && SESSION=mate + if [[ -z ${SESSION} ]]; then + ps -A | grep -q " xfce4-session$" && SESSION=xfce + ps -A | grep -q " kdeinit$" && SESSION=kde ps -A | grep -q " i3$" && SESSION=i3 ps -A | grep -q " i3term$" && SESSION=i3term - ps -A | grep -q "gnome-panel" && SESSION=gnome - ps -A | grep -q "gnome-shell" && SESSION=gnome-shell - fi - [ "$SESSION" = "kde" -a -f /etc/X11/wmsession.d/01Plasma ] && SESSION=plasma - [ -z "$SESSION" -a -x /usr/bin/startxfce4 ] && SESSION=xfce - [ -z "$SESSION" -a -x /usr/bin/startlxde ] && SESSION=lxde - [ -z "$SESSION" -a -x /usr/bin/startlxqt ] && SESSION=lxqt - echo $SESSION + ps -A | grep -q " gnome-panel$" && SESSION=gnome + ps -A | grep -q " gnome-shell$" && SESSION=gnome-shell + ps -A | grep -q " plasmashell$" && SESSION=plasma + fi + [[ -z ${SESSION} && -x /usr/bin/startxfce4 ]] && SESSION=xfce + [[ -z ${SESSION} && -x /usr/bin/startlxde ]] && SESSION=lxde + [[ -z ${SESSION} && -x /usr/bin/startlxqt ]] && SESSION=lxqt + [[ -z ${SESSION} && -x /usr/bin/plasmashell ]] && SESSION=plasma + [[ ${SESSION} == kde && -x /usr/bin/plasmashell ]] && SESSION=plasma + echo ${SESSION} } # =========================================================== # liblinuxlive functions # =========================================================== -debug_log() -{ +debug_log(){ if grep -q "debug" /proc/cmdline ; then echo "- debug: $*" >&2 log "- debug: $*" fi } -log() -{ +log(){ echo "$@" 2>/dev/null >>/var/log/ublinuxlog } -debug_mode() -{ +debug_mode(){ if [ "$(cmdline_parameter debug)" -o "$DEBUGMODE" == "yes" ] ; then name=$(basename $0) slash="/" @@ -148,8 +141,7 @@ debug_mode() fi } -echodebug() -{ +echodebug(){ [ "$DEBUG_IS_ENABLED" -o "$DEBUGMODE" == "yes" ] && echo "$1" if [ -n "$2" ] ;then command=$2 @@ -167,9 +159,7 @@ echodebug() # $1 = directory which will be compressed to squashfs module # $2 = output filesystem module file # $3..$9 = optional arguments like -keep-as-directory or -b 123456789 -# -create_module() -{ +create_module(){ . /usr/lib/ublinux/os-config . /etc/ublinux/config 2>/dev/null echo " $@ " | egrep -q ' -comp | -noD ' && MKSQFS_OPTS= @@ -179,18 +169,14 @@ create_module() # look into cmdline and echo $1 back if $1 is set # $1 = value name, case sensitive, for example 'debug' -# -cmdline_parameter() -{ +cmdline_parameter(){ . /etc/ublinux/config 2>/dev/null || . etc/ublinux/config 2>/dev/null echo -n " $CMDLINE " | cat /proc/cmdline - 2>/dev/null | tr "[:cntrl:]" " " | egrep -m1 -o "(^|[[:space:]])$1([[:space:]]|\$)" | head -1 | tr -d " " } # look into cmdline and echo value of $1 option # $1 = value name, case sensitive, for example 'changes' -# -cmdline_value() -{ +cmdline_value(){ . /etc/ublinux/config 2>/dev/null || . etc/ublinux/config 2>/dev/null echo -n " $CMDLINE " | cat /proc/cmdline - 2>/dev/null | tr "[:cntrl:]" " " | egrep -m1 -o "(^|[[:space:]])$1=[^[:space:]]+" | head -1 | cut -d "=" -f 2- } @@ -200,9 +186,7 @@ cmdline_value() # is already started, not during live setup # $1 = mounted module full path # $2..$n = optional arguments for the scripts, eg. 'start' -# -find_n_run_scripts() -{ +find_n_run_scripts(){ debug_log "find_n_run_scripts" "$*" local MOD @@ -228,8 +212,7 @@ find_n_run_scripts() } # test if the script is started by root user. If not, exit -allow_only_root() -{ +allow_only_root(){ if [ "0$UID" -ne 0 ]; then echo "Only root can run $(basename $0)"; exit 1 fi @@ -240,8 +223,7 @@ allow_only_root() # Hotkeys functions # ##################### -show_run() -{ +show_run(){ DE=$(detectDE) if [ "$DE" = "kde" -o "$DE" = "plasma" ] ; then krunner @@ -254,8 +236,7 @@ show_run() fi } -lock_session() -{ +lock_session(){ DE=$(detectDE) # qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Lock xterm -geometry 0x0+1+1 -e "dbus-send --dest=org.freedesktop.ScreenSaver --print-reply /ScreenSaver org.freedesktop.ScreenSaver.Lock" @@ -266,13 +247,11 @@ lock_session() fi } -xss_slideshow() -{ +xss_slideshow(){ chbg -xscreensaver -randomize -R -effect 1 -interval 0.2 -mode smart -max_size 100 -R /usr/share/ublinux/screensaver/Default >/dev/null 2>&1 } -xss_heartbeat() -{ +xss_heartbeat(){ . /usr/lib/ublinux/os-config . /etc/ublinux/config 2>/dev/null SSAVERBLOCKAPPS="$(echo "$SSAVERBLOCKAPPS"| tr ',; ' '|' )" @@ -280,8 +259,7 @@ xss_heartbeat() } -show_hotkeys() -{ +show_hotkeys(){ MSG1=$(gettext -s "UBLinux magic keys:") echo "$MSG1" > /tmp/listkeys echo " " >> /tmp/listkeys @@ -292,8 +270,7 @@ show_hotkeys() rm -f /tmp/listkeys } -show_info() -{ +show_info(){ . /etc/os-release LIVECDNAME="$NAME" UPTIME=$(uptime | awk '{print "time - "$1", up - "$3}') @@ -329,8 +306,7 @@ show_info() rm -f $HOME/info.txt } -touchpad() -{ +touchpad(){ MSG2=$(gettext -s "Touchpad disabled, WIN+t to enable again") if [ $(synclient -l | grep TouchpadOff | awk '{ print $3 }') -eq 0 ] ;then synclient TouchpadOff=1 @@ -340,8 +316,7 @@ touchpad() fi } -rfswitch() -{ +rfswitch(){ MSG3=$(gettext -s "bluetooth, WI-FI interfaces disabled, WIN+w to enable again") rfkill list | grep yes if [ $? -eq 0 ] ;then @@ -352,8 +327,7 @@ rfswitch() fi } -recordvideo() -{ +recordvideo(){ MSG1=$(gettext -s "Recording are stoped, please wait for encoding") MSG2=$(gettext -s "Video are encoded and placed to your home dir") RMDOPT= @@ -369,8 +343,7 @@ recordvideo() fi } -show_network() -{ +show_network(){ echo "netstat --inet" > ~/network.txt netstat --inet >> ~/network.txt echo -e "\nlsof -i" >> ~/network.txt @@ -379,32 +352,27 @@ show_network() rm -f $HOME/info.txt } -google_search() -{ +google_search(){ xclip -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "http://www.google.ru/search?hl=ru&q=" $1}' | xargs firefox -new-tab } -translate_en_rus() -{ +translate_en_rus(){ [ "$1" == "passive" ] && mdialog --passivepopup "$(wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$(xclip -o | sed "s/[\"'<>]//g")&sl=auto&tl=ru" | sed 's/\[\[\[\"//' | cut -d \" -f 1)" [ "$1" == "msgbox" ] && mdialog --msgbox "$(wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$(xclip -o | sed "s/[\"'<>]//g")&sl=auto&tl=ru" | sed 's/\[\[\[\"//' | cut -d \" -f 1)" [ "$1" == "firefox" ] && xclip -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "translate.google.com/translate_t?hl=en#en|ru|" $1}' | xargs firefox -new-tab } -translate_rus_en() -{ +translate_rus_en(){ [ "$1" == "passive" ] && mdialog --passivepopup "$(wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$(xclip -o | sed "s/[\"'<>]//g")&sl=auto&tl=en" | sed 's/\[\[\[\"//' | cut -d \" -f 1)" [ "$1" == "msgbox" ] && mdialog --msgbox "$(wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$(xclip -o | sed "s/[\"'<>]//g")&sl=auto&tl=en" | sed 's/\[\[\[\"//' | cut -d \" -f 1)" [ "$1" == "firefox" ] && xclip -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "translate.google.com/translate_t?hl=ru#ru|en|" $1}' | xargs firefox -new-tab } -open_url() -{ +open_url(){ xclip -o | sed -n 1p | xargs firefox -new-tab } -userkeys() -{ +userkeys(){ string=$(head -n $1 $HOME/.userkeys | tail -n 1) TMPFILE=$HOME/tmp/userkey-$(id -un) > $TMPFILE @@ -415,8 +383,7 @@ userkeys() rm -f $TMPFILE } -screen_scale() -{ +screen_scale(){ scale_[1]=1x1 scale_[2]=1x1.2 scale_[3]=1.2x1.2 diff --git a/ublinux/rc.local.d/41-x11vnc b/ublinux/rc.local.d/41-x11vnc index 9aa5b42..8eaa590 100755 --- a/ublinux/rc.local.d/41-x11vnc +++ b/ublinux/rc.local.d/41-x11vnc @@ -27,7 +27,7 @@ debug_mode "$0" "$@" if systemctl --quiet is-enabled lightdm.service &>/dev/null || systemctl --quiet is-enabled lightdm-plymouth.service &>/dev/null; then for ID_DISPLAY in /var/run/lightdm/root/:*; do FILE_X11VNC_SERVICE="/usr/lib/systemd/system/x11vnc-ublinux:${ID_DISPLAY##*:}.service" - OPTION_DISPLAY="-display :${ID_DISPLAY##*:} -auth /var/run/lightdm/root/:${ID_DISPLAY##*:}" + OPTION_DISPLAY="-display WAIT:${ID_DISPLAY##*:} -auth /var/run/lightdm/root/:${ID_DISPLAY##*:}" OPTION_LOG="-o /var/log/x11vnc-ublinux:${ID_DISPLAY##*:}.log" OPTION_PORT="-autoport 590${ID_DISPLAY##*:}" mkdir -p "${FILE_X11VNC_SERVICE%/*}" diff --git a/ublinux/rc.post.d/11-xorg b/ublinux/rc.post.d/11-xorg index 5bf64ea..cdafa9b 100755 --- a/ublinux/rc.post.d/11-xorg +++ b/ublinux/rc.post.d/11-xorg @@ -19,6 +19,9 @@ SOURCE=${SYSCONF}/keyboard; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null [[ ${DISPLAYMANAGER} == "none" ]] && exit + [[ -n ${VGADRV_AUTO} || -n ${XORG_EXT} || -n ${XORG_MONITOR[@]} ]] && mkdir -p /etc/X11/xorg.conf.d + rm -f /etc/X11/xorg.conf.d/*-*-ubconfig.conf + # Auto VGA driver loader if [[ -n ${VGADRV_AUTO} ]]; then while read LSPCI_DEVICE; do @@ -38,15 +41,40 @@ SOURCE=${SYSCONF}/keyboard; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null #modprobe drm #echo -e nvidia_drm\\nvidia_uvm\\nnvidia_modeset > usr/lib/modules-load.d/nvidia-dkms.conf fi - else - rm -f /etc/X11/xorg.conf.d/20-nvidia-ubconfig.conf - rm -f /etc/udev/rules.d/70-nvidia-ubconfig.rules +# else + #rm -f /etc/udev/rules.d/70-nvidia-ubconfig.rules fi #[ ! -z "$VGAID" ] && grep -q $VGAID /usr/share/ublinux/hwdata/deleteconf && rm -f /etc/X11/xorg.conf [[ -n "${DELETE_XORG_CONF}" ]] && rm -f /etc/X11/xorg.conf +## Управление дополнительными возможностями XORG + if [[ -n ${XORG_EXT} ]]; then + while read I_EXT; do + XORG_FILE_EXT="/etc/X11/xorg.conf.d/110-${I_EXT}-ubconfig.conf" + if egrep -iq "^nodpms$" <<< "${I_EXT}"; then + cat > ${XORG_FILE_EXT} < ${XORG_FILE_EXT} </dev/null ## rotate:normal | rotate:left | rotate:right | rotate:invert grep -q xres= /proc/cmdline && XORG_MONITOR=$(cat /proc/cmdline | awk -F xres= '{print $2}' | awk '{print $1}') if [[ "${SETXORGRES}" != "no" ]] && [[ -n "${XORG_MONITOR[@]}" ]]; then - XORG_FILE_MONITOR="/etc/X11/xorg.conf.d/10-monitor.conf" + XORG_FILE_MONITOR="/etc/X11/xorg.conf.d/120-monitor-ubconfig.conf" for VIDEO_PORT in "${!XORG_MONITOR[@]}"; do SOFT_MODELINE="gtf" SOFT_MODELINE_R= @@ -116,9 +144,11 @@ SOURCE=${SYSCONF}/keyboard; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null [[ -n ${XORG_STR} ]] && echo -e "${XORG_STR}" > "${XORG_FILE_MONITOR}" fi - if [ "$MKKBDFXORG" != "no" ] ;then + + if [[ ${MKKBDFXORG} != "no" ]] ;then + XORG_FILE_KEYBOARD="/etc/X11/xorg.conf.d/130-keyboard-ubconfig.conf" if ! grep -sqi XkbOptions /etc/X11/xorg.conf; then - cat > /etc/X11/xorg.conf.d/00-keyboard.conf < ${XORG_FILE_KEYBOARD} </dev/null # Если в системе всего один пользователь и пароль пользователя = паролю по умолчанию = паролю по умолчанию рута ublinux, то автологин [[ -z ${ONLY_ONE_USER} && ${PASS_ADMUID} == ${NOSECUREROOTPASSWD} && ${PASS_ADMUID} == ${DEFAULTPASSWD} ]] && AUTOLOGINUSER=yes fi - + + FILE_LIGHTDM_CONF="${ROOTFS}/etc/lightdm/lightdm.conf" + FILE_LIGHTDM_AUTOLOGIN_CONF="${ROOTFS}/etc/lightdm/lightdm.conf.d/100-autologin-ubconfig.conf" if [[ -z "${AUTOLOGINUSER}" ]]; then unset AUTOLOGINUSER [[ -f ${ROOTFS}/etc/X11/gdm/custom.conf ]] && sed -i "s/^AutomaticLogin=.*//g" ${ROOTFS}/etc/X11/gdm/custom.conf @@ -39,9 +41,9 @@ SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null [[ -f ${ROOTFS}/etc/slim.conf ]] && sed -i "s/^default_user[[:space:]].*//g" ${ROOTFS}/etc/slim.conf [[ -f ${ROOTFS}/etc/X11/slim/slim.conf ]] && sed -i "s/^default_user[[:space:]].*//g" ${ROOTFS}/etc/X11/slim/slim.conf [[ -f ${ROOTFS}/etc/lxdm/lxdm.conf ]] && sed -i "s/^autologin=.*//g" ${ROOTFS}/etc/lxdm/lxdm.conf - if [[ -f ${ROOTFS}/etc/lightdm/lightdm.conf ]]; then - sed "/^autologin-user=.*/d" -i ${ROOTFS}/etc/lightdm/lightdm.conf - rm -f ${ROOTFS}/etc/lightdm/lightdm.conf.d/ublinux-autologin.conf + if [[ -f ${FILE_LIGHTDM_CONF} ]]; then + sed "/^autologin-user=.*/d" -i ${FILE_LIGHTDM_CONF} + rm -f "${FILE_LIGHTDM_AUTOLOGIN_CONF}" fi else if [[ ${AUTOLOGINUSER} == yes && -z ${DISPLAYMANAGER_DEFAULTUSER} ]]; then @@ -58,10 +60,10 @@ SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null [[ -f ${ROOTFS}/etc/slim.conf ]] && sed -i "s/^default_user[[:space:]].*/default_user ${AUTOLOGINUSER}/g" ${ROOTFS}/etc/slim.conf [[ -f ${ROOTFS}/etc/X11/slim/slim.conf ]] && sed -i "s/^default_user[[:space:]].*/default_user ${AUTOLOGINUSER}/g" ${ROOTFS}/etc/X11/slim/slim.conf [[ -f ${ROOTFS}/etc/lxdm/lxdm.conf ]] && sed -i "s/^#autologin=.*/autologin=${AUTOLOGINUSER}/g" ${ROOTFS}/etc/lxdm/lxdm.conf - if [[ -f ${ROOTFS}/etc/lightdm/lightdm.conf ]]; then - sed "/^autologin-user=.*/d" -i ${ROOTFS}/etc/lightdm/lightdm.conf - mkdir -p ${ROOTFS}/etc/lightdm/lightdm.conf.d - cat <<-EOF | sed 's/^\s*\t*//' > "${ROOTFS}/etc/lightdm/lightdm.conf.d/ublinux-autologin.conf" + if [[ -f ${FILE_LIGHTDM_CONF} ]]; then + sed "/^autologin-user=.*/d" -i ${FILE_LIGHTDM_CONF} + mkdir -p ${{FILE_LIGHTDM_AUTOLOGIN_CONF%/*} + cat <<-EOF | sed 's/^\s*\t*//' > "${FILE_LIGHTDM_AUTOLOGIN_CONF}" [Seat:*] autologin-user=${AUTOLOGINUSER} EOF diff --git a/ublinux/rc.preinit.d/52-desktop b/ublinux/rc.preinit.d/52-desktop index 653b9c2..7895945 100755 --- a/ublinux/rc.preinit.d/52-desktop +++ b/ublinux/rc.preinit.d/52-desktop @@ -23,23 +23,23 @@ SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null switch3don(){ - echo "COMPOSITING_SERVER_START=no" >$SYSCONF/compositing-server + echo "COMPOSITING_SERVER_START=no" >${SYSCONF}/compositing-server #Gnome-shell does not supports compiz, so turn on it only in classic mode and only after desktop started if [ -x usr/bin/gnome-shell ] ;then - echo -e "COMPOSITING_WM_START=no\nCOMPOSITING_WM=compiz-fusion" >$SYSCONF/compositing-wm - sed -i /COMPOSITING_WM_START/d $SYSCONF/config - echo COMPOSITING_WM_START=yes >> $SYSCONF/config + echo -e "COMPOSITING_WM_START=no\nCOMPOSITING_WM=compiz-fusion" >${SYSCONF}/compositing-wm + sed -i /COMPOSITING_WM_START/d ${SYSCONF}/config + echo COMPOSITING_WM_START=yes >> ${SYSCONF}/config else - echo -e "COMPOSITING_WM_START=yes\nCOMPOSITING_WM=compiz-fusion" >$SYSCONF/compositing-wm + echo -e "COMPOSITING_WM_START=yes\nCOMPOSITING_WM=compiz-fusion" >${SYSCONF}/compositing-wm fi # [ -f usr/lib/libDrakX/harddrake/autoconf.pm ] && sed -i 's/^ *Xconfig::glx::write({});$/# Xconfig::glx::write({});/' usr/lib/libDrakX/harddrake/autoconf.pm [ -f etc/xdg/kwinrc ] && sed -i s/^Enabled=.*/Enabled=false/ etc/xdg/kwinrc } switch3doff(){ - echo "COMPOSITING_SERVER_START=no" >$SYSCONF/compositing-server - echo -e "COMPOSITING_WM_START=no\nCOMPOSITING_WM=compiz-fusion" >$SYSCONF/compositing-wm - sed -i /COMPOSITING_WM_START/d $SYSCONF/config + echo "COMPOSITING_SERVER_START=no" >${SYSCONF}/compositing-server + echo -e "COMPOSITING_WM_START=no\nCOMPOSITING_WM=compiz-fusion" >${SYSCONF}/compositing-wm + sed -i /COMPOSITING_WM_START/d ${SYSCONF}/config # [ -f usr/lib/libDrakX/harddrake/autoconf.pm ] && sed -i 's/^# Xconfig::glx::write({});$/ Xconfig::glx::write({});/' usr/lib/libDrakX/harddrake/autoconf.pm [ -f etc/xdg/kwinrc ] && sed -i s/^Enabled=.*/Enabled=true/ etc/xdg/kwinrc } @@ -48,8 +48,8 @@ setupdm(){ if [ -f lib/systemd/system/$1.service ] ;then ln -sf /lib/systemd/system/$1.service etc/systemd/system/display-manager.service ln -sf /lib/systemd/system/graphical.target etc/systemd/system/default.target - [[ -f $SYSCONF/desktop ]] && sed -i /DISPLAYMANAGER=/d $SYSCONF/desktop - echo "DISPLAYMANAGER=${1%%-plymouth*}" >> $SYSCONF/desktop + [[ -f ${SYSCONF}/desktop ]] && sed -i /DISPLAYMANAGER=/d ${SYSCONF}/desktop + echo "DISPLAYMANAGER=${1%%-plymouth*}" >> ${SYSCONF}/desktop case ${1%%-plymouth*} in lightdm) # FIX lightdm-greater @@ -63,8 +63,8 @@ setupdm(){ setupde(){ if [[ -f usr/share/xsessions/$1.desktop ]] ;then - sed -i /DESKTOP=/d $SYSCONF/desktop - echo "DESKTOP=$1" >> $SYSCONF/desktop + sed -i /DESKTOP=/d ${SYSCONF}/desktop + echo "DESKTOP=$1" >> ${SYSCONF}/desktop # ln -sf $1.desktop usr/share/xsessions/default.desktop # cat > usr/share/xsessions/default.desktop <> $SYSCONF/desktop + sed -i /DISPLAYMANAGER=/d ${SYSCONF}/desktop + echo "DISPLAYMANAGER=$DISPLAYMANAGER" >> ${SYSCONF}/desktop DESKTOP=none - sed -i /DESKTOP=/d $SYSCONF/desktop - echo "DESKTOP=$DESKTOP" >> $SYSCONF/desktop + sed -i /DESKTOP=/d ${SYSCONF}/desktop + echo "DESKTOP=$DESKTOP" >> ${SYSCONF}/desktop } [ "$(cmdline_parameter 3ddesktop)" ] && switch3don @@ -131,8 +131,8 @@ for i in $(cmdline_value desktop | tr , " " ) ;do xdm) DISPLAYMANAGER=xdm ;; lxdm) DISPLAYMANAGER=lxdm ;; sddm) DISPLAYMANAGER=sddm ;; - lan) sed -i s/ONBOOT=.*/ONBOOT=yes/ $SYSCONF/network-scripts/ifcfg-eth0 2>/dev/null ;; - nolan) sed -i s/ONBOOT=.*/ONBOOT=no/ $SYSCONF/network-scripts/ifcfg-eth0 2>/dev/null ;; + lan) sed -i s/ONBOOT=.*/ONBOOT=yes/ ${SYSCONF}/network-scripts/ifcfg-eth0 2>/dev/null ;; + nolan) sed -i s/ONBOOT=.*/ONBOOT=no/ ${SYSCONF}/network-scripts/ifcfg-eth0 2>/dev/null ;; *) DESKTOP=${i,,} ;; esac done @@ -144,9 +144,8 @@ done [[ -z "${DISPLAYMANAGER}" ]] && for i in slim xdm lxdm kdm gdm sddm lightdm; do [[ -f lib/systemd/system/$i.service ]] && DISPLAYMANAGER=$i done -#echo "DISPLAYMANAGER=$DISPLAYMANAGER" >> $SYSCONF/test [[ -f lib/systemd/system/${DISPLAYMANAGER}-plymouth.service ]] && setupdm ${DISPLAYMANAGER}-plymouth && rm -f lib/systemd/system/${DISPLAYMANAGER}.service || setupdm ${DISPLAYMANAGER} - + # Autodetect Display Environment # /usr/share/xsessions/*.desktop for X's sessions and /usr/share/wayland-sessions/*.desktop for Wayland's. [[ -z "${DESKTOP}" ]] && for i in i3 ukui steam lxde lxqt kde4 xfce mate gnome gnomeshell plasma; do @@ -159,12 +158,12 @@ done # Autodetect FirstStart # Если пароли по умолчанию ublinux, то FirstStart - grep -q "^root:${DEFAULTROOTPASSWD}:" etc/shadow && grep -q "^$(cat etc/passwd | grep ".*:x:${ADMUID}:" | cut -d: -f1):${DEFAULTPASSWD}:" etc/shadow && touch ${SYSCONF}/firststart + grep -q "^root:${DEFAULTROOTPASSWD}:" etc/shadow && grep -q "^$(cat etc/passwd | grep ".*:x:${ADMUID}:" | cut -d: -f1):${DEFAULTPASSWD}:" etc/shadow && touch ${SYSCONF}/firststart || rm -f ${SYSCONF}/firststart # Set default user to Display Manager if [[ "${DISPLAYMANAGER}" == "lightdm" && ${DISPLAYMANAGER_DEFAULTUSER} ]]; then - sed -i /DISPLAYMANAGER_DEFAULTUSER=/d $SYSCONF/desktop - echo "DISPLAYMANAGER_DEFAULTUSER=${DISPLAYMANAGER_DEFAULTUSER}" >> $SYSCONF/desktop + sed -i /DISPLAYMANAGER_DEFAULTUSER=/d ${SYSCONF}/desktop + echo "DISPLAYMANAGER_DEFAULTUSER=${DISPLAYMANAGER_DEFAULTUSER}" >> ${SYSCONF}/desktop mkdir -p var/lib/lightdm/.cache/lightdm-gtk-greeter/ echo "[greeter]" > var/lib/lightdm/.cache/lightdm-gtk-greeter/state echo "last-user=${DISPLAYMANAGER_DEFAULTUSER}" >> var/lib/lightdm/.cache/lightdm-gtk-greeter/state @@ -172,6 +171,4 @@ done chmod 1770 var/lib/lightdm/ chmod 755 var/lib/lightdm/.cache/lightdm-gtk-greeter/ chmod 644 var/lib/lightdm/.cache/lightdm-gtk-greeter/state - fi - - + fi \ No newline at end of file diff --git a/ublinux/rc.preinit.d/63-xorg-dpi b/ublinux/rc.preinit.d/63-xorg-dpi new file mode 100755 index 0000000..d627aaf --- /dev/null +++ b/ublinux/rc.preinit.d/63-xorg-dpi @@ -0,0 +1,105 @@ +#!/bin/bash +# +# Initial script for Live operating system +# This script are launching before starting init from linux-live script. +# Current dir allways must be set to root (/) +# All system path must be relative, except initrd dirs + +ENABLED=yes +[[ ${ENABLED} != "yes" ]] && exit 0 +DEBUGMODE=no + +PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin + +unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=. +SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +debug_mode "$0" "$@" + +SYSCONF="${ROOTFS}/${SYSCONF}" +SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/video; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null + +exec_xorg_dpi(){ + FILE_LIGHTDM_GTK_GREATER_CONF="${ROOTFS}/etc/lightdm/lightdm-gtk-greeter.conf.d/100-hidpi-ubconfig.conf" + rm -f ${FILE_LIGHTDM_GTK_GREATER_CONF} + + if [[ -n ${XORG_DPI} ]]; then + ## Настрока XOrg DPI + GDK_SCALE=1 + GDK_DPI_SCALE=0 + ELM_SCALE=1 # Масштабирование для UI Elementary + QT_FONT_DPI=96 # + #PLASMA_USE_QT_SCALING=0 # Разрешить Plasma использовать настройки QT по масштабированию + #QT_AUTO_SCREEN_SCALE_FACTOR=0 # Автоматическое масштабирование, отключать при масштабировании вручную + #QT_SCALE_FACTOR=2 # Масштабирование вручную, глобально для всех экранов + #QT_SCREEN_SCALE_FACTORS="2;2;2;2" # Масштабирование вручную для каждого экрана + if [[ ${XORG_DPI} == @(no|disable) ]]; then + grep -q "^\s*GDK_SCALE=" ${ROOTFS}/etc/environment 2>/dev/null && grep -v "^\s*GDK_SCALE=" ${ROOTFS}/etc/environment > ${ROOTFS}/etc/environment + grep -q "^\s*GDK_DPI_SCALE=" ${ROOTFS}/etc/environment 2>/dev/null && grep -v "^\s*GDK_DPI_SCALE=" ${ROOTFS}/etc/environment > ${ROOTFS}/etc/environment + grep -q "^\s*ELM_SCALE=" ${ROOTFS}/etc/environment 2>/dev/null && grep -v "^\s*ELM_SCALE=" ${ROOTFS}/etc/environment > ${ROOTFS}/etc/environment + grep -q "^\s*QT_FONT_DPI=" ${ROOTFS}/etc/environment 2>/dev/null && grep -v "^\s*QT_FONT_DPI=" ${ROOTFS}/etc/environment > ${ROOTFS}/etc/environment + #grep -q "^\s*PLASMA_USE_QT_SCALING=" ${ROOTFS}/etc/environment 2>/dev/null && grep -v "^\s*PLASMA_USE_QT_SCALING=" ${ROOTFS}/etc/environment > ${ROOTFS}/etc/environment + #grep -q "^\s*QT_AUTO_SCREEN_SCALE_FACTOR=" ${ROOTFS}/etc/environment 2>/dev/null && grep -v "^\s*QT_AUTO_SCREEN_SCALE_FACTOR=" ${ROOTFS}/etc/environment > ${ROOTFS}/etc/environment + return 0 + elif [[ ${XORG_DPI} == auto ]]; then + XORG_DPI=192 + fi + + if [[ ${XORG_DPI} == @(192|4K) ]]; then + XORG_DPI=192 + GDK_SCALE=2 + GDK_DPI_SCALE=0.5 + ELM_SCALE=1.5 + LIGHTDM_CURSOR_MOUSE=48 + QT_FONT_DPI=192 + #PLASMA_USE_QT_SCALING=1 + #QT_AUTO_SCREEN_SCALE_FACTOR=1 + elif [[ ${XORG_DPI} == @(144|2K) ]]; then + XORG_DPI=144 + GDK_SCALE=2 + GDK_DPI_SCALE=0.5 + ELM_SCALE=1.5 + LIGHTDM_CURSOR_MOUSE=32 + QT_FONT_DPI=144 + #PLASMA_USE_QT_SCALING=1 + #QT_AUTO_SCREEN_SCALE_FACTOR=1 + fi + grep -q "^\s*GDK_SCALE=" ${ROOTFS}/etc/environment 2>/dev/null \ + && sed -E "s/^\s*(GDK_SCALE=).*/\1${GDK_SCALE}/" -i ${ROOTFS}/etc/environment 2>/dev/null \ + || sed -e '$a\' -e "GDK_SCALE=${GDK_SCALE}" -i ${ROOTFS}/etc/environment 2>/dev/null + grep -q "^\s*GDK_DPI_SCALE=" ${ROOTFS}/etc/environment 2>/dev/null \ + && sed -E "s/^\s*(GDK_DPI_SCALE=).*/\1${GDK_DPI_SCALE}/" -i ${ROOTFS}/etc/environment 2>/dev/null \ + || sed -e '$a\' -e "GDK_DPI_SCALE=${GDK_DPI_SCALE}" -i ${ROOTFS}/etc/environment 2>/dev/null + grep -q "^\s*ELM_SCALE=" ${ROOTFS}/etc/environment 2>/dev/null \ + && sed -E "s/^\s*(ELM_SCALE=).*/\1${ELM_SCALE}/" -i ${ROOTFS}/etc/environment 2>/dev/null \ + || sed -e '$a\' -e "ELM_SCALE=${ELM_SCALE}" -i ${ROOTFS}/etc/environment 2>/dev/null + grep -q "^\s*QT_FONT_DPI=" ${ROOTFS}/etc/environment 2>/dev/null \ + && sed -E "s/^\s*(QT_FONT_DPI=).*/\1${QT_FONT_DPI}/" -i ${ROOTFS}/etc/environment 2>/dev/null \ + || sed -e '$a\' -e "QT_FONT_DPI=${QT_FONT_DPI}" -i ${ROOTFS}/etc/environment 2>/dev/null + #grep -q "^\s*PLASMA_USE_QT_SCALING=" ${ROOTFS}/etc/environment 2>/dev/null \ + # && sed -E "s/^\s*(PLASMA_USE_QT_SCALING=).*/\1${PLASMA_USE_QT_SCALING}/" -i ${ROOTFS}/etc/environment 2>/dev/null \ + # || sed -e '$a\' -e "PLASMA_USE_QT_SCALING=${PLASMA_USE_QT_SCALING}" -i ${ROOTFS}/etc/environment 2>/dev/null + #grep -q "^\s*QT_AUTO_SCREEN_SCALE_FACTOR=" ${ROOTFS}/etc/environment 2>/dev/null \ + # && sed -E "s/^\s*(QT_AUTO_SCREEN_SCALE_FACTOR=).*/\1${QT_AUTO_SCREEN_SCALE_FACTOR}/" -i ${ROOTFS}/etc/environment 2>/dev/null \ + # || sed -e '$a\' -e "QT_AUTO_SCREEN_SCALE_FACTOR=${QT_AUTO_SCREEN_SCALE_FACTOR}" -i ${ROOTFS}/etc/environment 2>/dev/null + ## Настрока Lightdm DPI + if [[ -d ${ROOTFS}/etc/lightdm ]]; then + mkdir -p "${FILE_LIGHTDM_GTK_GREATER_CONF%/*}" + cat < "${FILE_LIGHTDM_GTK_GREATER_CONF}" +[greeter] + cursor-theme-size = ${LIGHTDM_CURSOR_MOUSE} + xft-antialias = true + xft-dpi = ${XORG_DPI} + xft-hintstyle = hintfull + xft-rgba = vrgb +EOF + fi + fi +} + +################ +##### MAIN ##### +################ + + exec_xorg_dpi $@ diff --git a/ublinux/rc.xorg/20-de-hidpi b/ublinux/rc.xorg/20-de-hidpi new file mode 100755 index 0000000..86e7da9 --- /dev/null +++ b/ublinux/rc.xorg/20-de-hidpi @@ -0,0 +1,104 @@ +#!/usr/bin/env bash + +ENABLED=yes +[[ ${ENABLED} != yes ]] && exit 0 + +SOURCE=/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/video; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null + +xfce4_hidpi(){ + [[ -x /usr/bin/startxfce4 ]] || return 0 + if [[ $1 == @(enable|on) ]]; then + xfconf-query --channel xsettings --property /Gdk/WindowScalingFactor --create --type int --set "${SCALE}" + xfconf-query --channel xsettings --property /Gtk/CursorThemeSize --create --type int --set "${MOUSE_CURSOR}" + xfconf-query --channel xsettings --property /Xft/DPI --create --type int --set "${XORG_DPI}" + xfconf-query --channel xfwm4 --property /general/theme --create --type string --set "Default-xhdpi" + elif [[ $1 == @(disable|off) ]]; then + xfconf-query --channel xsettings --property /Gdk/WindowScalingFactor --reset + xfconf-query --channel xfwm4 --property /general/theme --reset + xfconf-query --channel xsettings --property /Gtk/CursorThemeSize --reset + xfconf-query --channel xsettings --property /Xft/DPI --reset + fi +} +plasma_hidpi(){ + [[ -x /usr/bin/plasmashell ]] || return 0 + if [[ $1 == @(enable|on) ]]; then + kwriteconfig5 --file kcmfonts --group General --key forceFontDPI "${XORG_DPI}" + kwriteconfig5 --file kcminputrc --group Mouse --key cursorSize "${MOUSE_CURSOR}" + kwriteconfig5 --file kdeglobals --group KScreen --key ScaleFactor "${SCALE}" + kwriteconfig5 --file kdeglobals --group KScreen --key ScreenScaleFactors "${SCALE};${SCALE};${SCALE};${SCALE};" + # ScreenScaleFactors "DP1=2;HDMI1=2;HDMI2=2;VIRTUAL1=2;" + elif [[ $1 == @(disable|off) ]]; then + kwriteconfig5 --file kcmfonts --group General --key forceFontDPI --delete + kwriteconfig5 --file kcminputrc --group Mouse --key cursorSize --delete + kwriteconfig5 --file kdeglobals --group KScreen --key ScaleFactor --delete + kwriteconfig5 --file kdeglobals --group KScreen --key ScreenScaleFactors --delete + fi +} +gnome_hidpi(){ + [[ -x /usr/bin/startgnome ]] || return 0 + if [[ $1 == @(enable|on) ]]; then + true + elif [[ $1 == @(disable|off) ]]; then + true + fi +} +lxde_hidpi(){ + [[ -x /usr/bin/startlxde ]] || return 0 + if [[ $1 == @(enable|on) ]]; then + true + elif [[ $1 == @(disable|off) ]]; then + true + fi +} +lxqt_hidpi(){ + [[ -x /usr/bin/startlxqt ]] || return 0 + if [[ $1 == @(enable|on) ]]; then + true + elif [[ $1 == @(disable|off) ]]; then + true + fi +} +mate_hidpi(){ + [[ -x /usr/bin/startmate ]] || return 0 + if [[ $1 == @(enable|on) ]]; then + true + elif [[ $1 == @(disable|off) ]]; then + true + fi +} + + if [[ -n ${XORG_DPI} ]]; then + if [[ ${XORG_DPI} == @(no|disable) ]]; then + xfce4_hidpi disable + plasma_hidpi disable + gnome_hidpi disable + lxde_hidpi disable + lxqt_hidpi disable + mate_hidpi disable + return 0 + elif [[ ${XORG_DPI} == auto ]]; then + XORG_DPI=192 + MOUSE_CURSOR=48 + SCALE=2 + elif [[ ${XORG_DPI} == @(192|4K) ]]; then + XORG_DPI=192 + MOUSE_CURSOR=48 + SCALE=2 + elif [[ ${XORG_DPI} == @(144|2K) ]]; then + XORG_DPI=144 + MOUSE_CURSOR=32 + SCALE=1.5 + else + # Пользовательское значение XORG_DPI, остальные велечины высчитываются + MOUSE_CURSOR=28 + SCALE=1 + fi + xfce4_hidpi enable + plasma_hidpi enable + gnome_hidpi enable + lxde_hidpi enable + lxqt_hidpi enable + mate_hidpi enable + fi diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index 5b3fa67..88df80f 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -30,7 +30,7 @@ [/etc/ublinux/config] ## Config verison ## Версия конфигурации -VERSION=2.20 +VERSION=2.21 ## Additional boot parameters ## Дополнительные параметры загрузки, только для управления модулями @@ -62,14 +62,14 @@ NEEDEDUSERS='superadmin:1000:x:Администратор' ## Пользователи системы ## ADDUSER[user_name:uid:comment:user_group:extra_groups:optional]=password_hash|x ## user_name # Имя пользователя -## uid # UID пользователя, если необходимо автоматически расчитавыть, то оставить пустым или 'x' +## uid # UID пользователя, если необходимо автоматически рассчитывать, то оставить пустым или 'x' ## comment # Поле GECOS, с подробным описанием пользователя, можно локализованное ## user_group # Основная группа пользователя, если выбрано пусто или 'x', то 'user_group=user_name' ## extra_groups # Дополнительные группы пользователя ## optional # Дополнительные опции, например: '--shell /usr/bin/bash --no-user-group' ## password_hash|x # Хеш пароля пользователя, если выбрано 'x', то 'password_hash=DEFAULTPASSWD' ## ADDUSER[superadmin:1000:Администратор:]=x -## ADDUSER[user-1:x:Пользователь-1::vboxusers,libvirt]=passsword_hash +## ADDUSER[user-1:x:Пользователь-1::vboxusers,libvirt]='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' # Помещать пользователя с ID 1000 в группу Администраторов whell #ADDADM=yes @@ -242,15 +242,16 @@ GRUB_BOOT_SILENT="splash" ## Аргументы командной строки для загрузки ядра Linux ## GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ## Возможные параметры GRUB_CMDLINE_LINUX: +## modprobe.blacklist=nouveau # Отключить автоматическую загрузку свободного драйвера nouveau для видеоадаптера NVIDIA ## nomodeset # Отключить выбор и загрузку ядром драйверов видео ## i915.enable_dc=0 # Отключить управление питанием графического процессора -## intel_idle.max_cstate=1 # Ограничивает состояния сна процессора, это предотвращает переход процессора в состояния глубокого сна ## ahci.mobile_lpm_policy=1 # Максимальная производительность, управление питанием ## intel_idle.max_cstate=1 # Ограничивает состояния сна процессора, это предотвращает переход процессора в состояния глубокого сна ## intel_idle.max_cstate=4 # Устраняет мерцание дисплея ноутбука на процессорах Ultra Voltage ## snd-intel-dspcfg.dsp_driver=1 # Принудительный выбор драйвера звукового устройства от Intel ## snd-intel-dspcfg.dsp_driver=3 ## security=apparmor +## usbcore.autosuspend=-1 ## Отключить авто засыпание USB устройств в режиме suspend GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ################################################################################ @@ -291,8 +292,8 @@ GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ## Клиент для подключения к домену [ *realmd_sssd | realmd_winbind | samba | none ] ## DOMAIN[client]=realmd_sssd -## Пользователь имеющие права ввода в домен. -## Применяется если необходимо автоматизировать ввод в домен с большого числа ПК, или при работе в режиме полной песочнице где невозможно сохранить +## Пользователь имеющий права ввода в домен. +## Применяется, если необходимо автоматизировать ввод в домен с большого числа ПК, или при работе в режиме полной песочницы, где невозможно сохранить ## Пароль кодировать в base64: echo 'password' | base64 ## DOMAIN[admanger]=USER_ADMIN:password_base64' ## DOMAIN[admanger]=Администратор:0J3QvtCy0YvQuV/QlNC10L3RjCEK @@ -303,7 +304,7 @@ GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ## Группа на контроллере домена, пользователи которой будут иметь права для доступа по ssh ## DOMAIN[group:ssh]=sudoers@ublinux.ru -## Пользователи которым разрешён вход в домен, ограничение +## Ограничить пользователей, которым разрешён вход в домен ## REALM_PERMIT[user]=user-1@ublinux.ru,user-2@ublinux.ru,ublinux.ru\\user-3 ## REALM_PERMIT[group]=ublinux_group@ublinux.ru ## REALM_PERMIT[user]=user-1@ublinux.ru @@ -368,7 +369,7 @@ IPV6=no ## Серверы времени ## NTPSERVERS=dhcp|default|stop|$VALUE ## =dhcp # Выбрать сервер времени предложенный DHCP -## =default # Выбрать сервера времени по умолчанияю: ntp1.vniiftri.ru ntp2.vniiftri.ru ntp3.vniiftri.ru ntp4.vniiftri.ru ntp21.vniiftri.ru ru.pool.ntp.org +## =default # Выбрать сервера времени по умолчанию: ntp1.vniiftri.ru ntp2.vniiftri.ru ntp3.vniiftri.ru ntp4.vniiftri.ru ntp21.vniiftri.ru ru.pool.ntp.org ## =stop # Отключить NTP синхронизацию принудительно ## =ntp1.vniiftri.ru,ru.pool.ntp.org # VALUE=Перечень серверов, через ',' или ';' ## не задано # Никаких действий не предпринимается @@ -421,9 +422,9 @@ NSSWITCHWINBIND=yes ## Управление доступом в систему, правила разрешения. /etc/security/access.conf ## Предостережение: порядок правил имеет значение. Проверяется последовательно и будет применено первое подходящее правило -## Первыми обрабатываются привила ACCESS_ALLOWED_LOGIN, после правила ACCESS_DENIED_LOGIN +## Первыми обрабатываются правила ACCESS_ALLOWED_LOGIN, после правила ACCESS_DENIED_LOGIN ## ACCESS_ALLOWED_LOGIN=rule_1,rule_2,rule_n -## Формат привила: users/groups:origins +## Формат правила: users/groups:origins ## users/groups — список пользователей или групп пользователей или ключевое слово ALL ## origins — список TTY (для локального доступа), имен хостов, доменных имен, IP-адресов, ключевое слово ALL или LOCAL ## root:cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6 vc/1 # Пользователю root разрешен доступ через cron, X11 терминал :0, tty1, ..., tty6, vc/1 @@ -433,7 +434,7 @@ NSSWITCHWINBIND=yes ## superadmin:foo1.bar.org foo2.bar.org .foo.bar.org ## @admins foo:ALL # Пользователю foo и членам администраторов сетевой группы admins разрешен доступ ## @usergroup@@hostgroup:ALL # Членам группы usergroup и группы хостов hostgroup разрешен доступ -## DOMAIN.ORG\Domain Admins:ALL # Пользователя входящих в группу "Domain Admins" домена DOMAIN.ORG разрешен доступ +## DOMAIN.ORG\Domain Admins:ALL # Пользователям входящих в группу "Domain Admins" домена DOMAIN.ORG разрешен доступ ## (wheel):ALL # Членам группы wheel разрешен доступ ## ALL:LOCAL # Разрешить локальным учетным записям вход в систему локально ## ALL EXCEPT root: 192.168.0. # Разрешить всем, кроме root, входить в систему из под указанной маски сети @@ -441,7 +442,7 @@ NSSWITCHWINBIND=yes ## Управление доступом в систему, правила блокировки. /etc/security/access.conf ## ACCESS_DENIED_LOGIN=rule_1,rule_2,rule_n -## Rules: +## Правила (rule_n): ## root:ALL # Пользователю root должно быть отказано в доступе из всех источников ## root:ALL EXCEPT LOCAL # Запретить root вход через сеть ## wheel:ALL EXCEPT LOCAL .domain.org # Запретить нелокальный вход в привилегированные учетные записи группы wheel @@ -491,7 +492,7 @@ NSSWITCHWINBIND=yes ## -maxdepth 1 # Путь до каталога поиска с уровнем вложения 1 ## Files: ## files # Имена файлов разделённые: , или пробелом или ; -## all # Еквивалентно =gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk +## all # Эквивалентно =gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk ## ACCESS_DENIED_INTERPRETER=all ## ACCESS_DENIED_INTERPRETER[/usr/bin]=gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk @@ -547,7 +548,7 @@ NSSWITCHWINBIND=yes ## # Номер проекта, цифра, обязательное поле, может принимать значение ## numbers # Произвольный номер состоящий только из цифр ## AUTO # Автоматически генерирует произвольный номер. Если на путь ранее устанавливался номер, то использует старый номер. -## # Имя буквенно проекта, не обязательное поле +## # Имя проекта, не обязательное поле ## # Указывает программное ограничение размера block в файловой системе, предупреждение. Применимо: M(egabyte),G(igabyte),T(erabyte) ## # Указывает жесткое ограничение размера block в файловой системе. Применимо: M(egabyte),G(igabyte),T(erabyte) ## # Указывает программное ограничение inode в файловой системе, предупреждение @@ -569,7 +570,7 @@ NSSWITCHWINBIND=yes ## Получить древовидный список cgroups и запущенных процессов: systemd-cgls --no-page ## Показать монторинг потребляемых ресурсов: systemd-cgtop -c; systemd-cgtop -m ## Показать статус и используемые ограничения: systemctl status user.slice --no-page -## Еденицы измерения: %, K, M, G, T +## Единицы измерения: %, K, M, G, T ## unit: system.slice, user.slice, user-0.slice, user-1000.slice, smb.service, cups.service, httpd.service, ## user: superadmin, user-1 # Системное имя пользователя ## property: @@ -694,10 +695,11 @@ NSSWITCHWINBIND=yes ################################################################################ [/etc/ublinux/desktop] ## User for X autostarting -## Пользователь для автовхода, значения: -## =user_name - включает автовход указанного пользователя -## =yes - включает автовход пользователя с id =${ADMUID} по умолчанию =1000, по умолчанию =superadmin -## если задан параметр ${DISPLAYMANAGER_DEFAULTUSER}, то автовход от пользователя переменной +## Пользователь для автовхода, AUTOLOGINUSER=, значения: +## =user_name # Включает автовход указанного пользователя +## =yes|=enable # Включает автовход пользователя с id =${ADMUID} по умолчанию =1000, по умолчанию =superadmin +## =no|=disable # Принудительно отключить автологин +## Если задан параметр ${DISPLAYMANAGER_DEFAULTUSER}, то автовход от пользователя переменной ## AUTOLOGINUSER=yes # Графическая среда по умолчанию может быть изменена @@ -744,14 +746,26 @@ NSSWITCHWINBIND=yes ## при подключенных модулях станут активны проприетарные драйвера (default no) #FREEVGADRV=no -## Принудительно добавить и установить разрешение монитора в /etc/X11/xorg.conf.d/10-monitor.conf +## Принудительно добавить и установить разрешение монитора в /etc/X11/xorg.conf.d/ ## Перечень имён портов вывода получить по команде: xrandr или xrandr | grep -E "^[A-Z0-9]* connected" | cut -d' ' -f1 ## XORG_MONITOR[VGA1]=1920x1080,1600x1200x60,848x480x60,nodpms ## Примеры имени видео порта: VGA1 HDMI1 DP1 DVI1 LVDS1 TV1 VIRTUAL1 ## =1920x1080 =1920x1080x75 ## cvt , gtf , reduced|r , dpms , nodpms , enable , disable , ignore , primary , ## lo|LeftOf:{name} , ro|RightOf:{name} , ab|Above:{name} , be|Below:{name} , rotate:normal|left|right|invert -#XORG_MONITOR[VGA1]=1920x1080,ro:hdmi1 +## XORG_MONITOR[VGA1]=1920x1080,ro:hdmi1 + +## Принудительно задать дополнительные возможности XORG, XORG_EXT=, значения: +## nodpms # Отключить DPMS на XORG глобально +## dpms # Включить DPMS на XORG глобально +## XORG_EXT=nodpms + +## Принудительно задать DPI, XORG_DPI=, значения: +## =auto # Автоматически выставить DPI относительно максимального разрешения +## =96 # Значение по умолчнию, масштаб 100% +## =144|=2K # Для мониторов 2K, масштаб 150% +## =192|=4K # Для мониторов 4K, масштаб 200% +## XORG_DPI=192 ## драйверы для видеокарт в случае, если проприентарные не доступны или не работают #FAILSAFENVIDIA=fbdev @@ -964,7 +978,7 @@ NSSWITCHWINBIND=yes # Выберите один из вариантов, не включайте сразу 2 переменные сразу # 1 вариант. Может снизить производительность в играх #export __GL_YIELD=USLEEP -# 2 вариант. Не на каждой видео карте может сработать +# 2 вариант. Не на каждой видеокарте может сработать #export KWIN_TRIPLE_BUFFER=1 ################################################################################ diff --git a/ublinux/templates/ublinux-data_ru.ini b/ublinux/templates/ublinux-data_ru.ini index 5b3fa67..88df80f 100644 --- a/ublinux/templates/ublinux-data_ru.ini +++ b/ublinux/templates/ublinux-data_ru.ini @@ -30,7 +30,7 @@ [/etc/ublinux/config] ## Config verison ## Версия конфигурации -VERSION=2.20 +VERSION=2.21 ## Additional boot parameters ## Дополнительные параметры загрузки, только для управления модулями @@ -62,14 +62,14 @@ NEEDEDUSERS='superadmin:1000:x:Администратор' ## Пользователи системы ## ADDUSER[user_name:uid:comment:user_group:extra_groups:optional]=password_hash|x ## user_name # Имя пользователя -## uid # UID пользователя, если необходимо автоматически расчитавыть, то оставить пустым или 'x' +## uid # UID пользователя, если необходимо автоматически рассчитывать, то оставить пустым или 'x' ## comment # Поле GECOS, с подробным описанием пользователя, можно локализованное ## user_group # Основная группа пользователя, если выбрано пусто или 'x', то 'user_group=user_name' ## extra_groups # Дополнительные группы пользователя ## optional # Дополнительные опции, например: '--shell /usr/bin/bash --no-user-group' ## password_hash|x # Хеш пароля пользователя, если выбрано 'x', то 'password_hash=DEFAULTPASSWD' ## ADDUSER[superadmin:1000:Администратор:]=x -## ADDUSER[user-1:x:Пользователь-1::vboxusers,libvirt]=passsword_hash +## ADDUSER[user-1:x:Пользователь-1::vboxusers,libvirt]='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' # Помещать пользователя с ID 1000 в группу Администраторов whell #ADDADM=yes @@ -242,15 +242,16 @@ GRUB_BOOT_SILENT="splash" ## Аргументы командной строки для загрузки ядра Linux ## GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ## Возможные параметры GRUB_CMDLINE_LINUX: +## modprobe.blacklist=nouveau # Отключить автоматическую загрузку свободного драйвера nouveau для видеоадаптера NVIDIA ## nomodeset # Отключить выбор и загрузку ядром драйверов видео ## i915.enable_dc=0 # Отключить управление питанием графического процессора -## intel_idle.max_cstate=1 # Ограничивает состояния сна процессора, это предотвращает переход процессора в состояния глубокого сна ## ahci.mobile_lpm_policy=1 # Максимальная производительность, управление питанием ## intel_idle.max_cstate=1 # Ограничивает состояния сна процессора, это предотвращает переход процессора в состояния глубокого сна ## intel_idle.max_cstate=4 # Устраняет мерцание дисплея ноутбука на процессорах Ultra Voltage ## snd-intel-dspcfg.dsp_driver=1 # Принудительный выбор драйвера звукового устройства от Intel ## snd-intel-dspcfg.dsp_driver=3 ## security=apparmor +## usbcore.autosuspend=-1 ## Отключить авто засыпание USB устройств в режиме suspend GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ################################################################################ @@ -291,8 +292,8 @@ GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ## Клиент для подключения к домену [ *realmd_sssd | realmd_winbind | samba | none ] ## DOMAIN[client]=realmd_sssd -## Пользователь имеющие права ввода в домен. -## Применяется если необходимо автоматизировать ввод в домен с большого числа ПК, или при работе в режиме полной песочнице где невозможно сохранить +## Пользователь имеющий права ввода в домен. +## Применяется, если необходимо автоматизировать ввод в домен с большого числа ПК, или при работе в режиме полной песочницы, где невозможно сохранить ## Пароль кодировать в base64: echo 'password' | base64 ## DOMAIN[admanger]=USER_ADMIN:password_base64' ## DOMAIN[admanger]=Администратор:0J3QvtCy0YvQuV/QlNC10L3RjCEK @@ -303,7 +304,7 @@ GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" ## Группа на контроллере домена, пользователи которой будут иметь права для доступа по ssh ## DOMAIN[group:ssh]=sudoers@ublinux.ru -## Пользователи которым разрешён вход в домен, ограничение +## Ограничить пользователей, которым разрешён вход в домен ## REALM_PERMIT[user]=user-1@ublinux.ru,user-2@ublinux.ru,ublinux.ru\\user-3 ## REALM_PERMIT[group]=ublinux_group@ublinux.ru ## REALM_PERMIT[user]=user-1@ublinux.ru @@ -368,7 +369,7 @@ IPV6=no ## Серверы времени ## NTPSERVERS=dhcp|default|stop|$VALUE ## =dhcp # Выбрать сервер времени предложенный DHCP -## =default # Выбрать сервера времени по умолчанияю: ntp1.vniiftri.ru ntp2.vniiftri.ru ntp3.vniiftri.ru ntp4.vniiftri.ru ntp21.vniiftri.ru ru.pool.ntp.org +## =default # Выбрать сервера времени по умолчанию: ntp1.vniiftri.ru ntp2.vniiftri.ru ntp3.vniiftri.ru ntp4.vniiftri.ru ntp21.vniiftri.ru ru.pool.ntp.org ## =stop # Отключить NTP синхронизацию принудительно ## =ntp1.vniiftri.ru,ru.pool.ntp.org # VALUE=Перечень серверов, через ',' или ';' ## не задано # Никаких действий не предпринимается @@ -421,9 +422,9 @@ NSSWITCHWINBIND=yes ## Управление доступом в систему, правила разрешения. /etc/security/access.conf ## Предостережение: порядок правил имеет значение. Проверяется последовательно и будет применено первое подходящее правило -## Первыми обрабатываются привила ACCESS_ALLOWED_LOGIN, после правила ACCESS_DENIED_LOGIN +## Первыми обрабатываются правила ACCESS_ALLOWED_LOGIN, после правила ACCESS_DENIED_LOGIN ## ACCESS_ALLOWED_LOGIN=rule_1,rule_2,rule_n -## Формат привила: users/groups:origins +## Формат правила: users/groups:origins ## users/groups — список пользователей или групп пользователей или ключевое слово ALL ## origins — список TTY (для локального доступа), имен хостов, доменных имен, IP-адресов, ключевое слово ALL или LOCAL ## root:cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6 vc/1 # Пользователю root разрешен доступ через cron, X11 терминал :0, tty1, ..., tty6, vc/1 @@ -433,7 +434,7 @@ NSSWITCHWINBIND=yes ## superadmin:foo1.bar.org foo2.bar.org .foo.bar.org ## @admins foo:ALL # Пользователю foo и членам администраторов сетевой группы admins разрешен доступ ## @usergroup@@hostgroup:ALL # Членам группы usergroup и группы хостов hostgroup разрешен доступ -## DOMAIN.ORG\Domain Admins:ALL # Пользователя входящих в группу "Domain Admins" домена DOMAIN.ORG разрешен доступ +## DOMAIN.ORG\Domain Admins:ALL # Пользователям входящих в группу "Domain Admins" домена DOMAIN.ORG разрешен доступ ## (wheel):ALL # Членам группы wheel разрешен доступ ## ALL:LOCAL # Разрешить локальным учетным записям вход в систему локально ## ALL EXCEPT root: 192.168.0. # Разрешить всем, кроме root, входить в систему из под указанной маски сети @@ -441,7 +442,7 @@ NSSWITCHWINBIND=yes ## Управление доступом в систему, правила блокировки. /etc/security/access.conf ## ACCESS_DENIED_LOGIN=rule_1,rule_2,rule_n -## Rules: +## Правила (rule_n): ## root:ALL # Пользователю root должно быть отказано в доступе из всех источников ## root:ALL EXCEPT LOCAL # Запретить root вход через сеть ## wheel:ALL EXCEPT LOCAL .domain.org # Запретить нелокальный вход в привилегированные учетные записи группы wheel @@ -491,7 +492,7 @@ NSSWITCHWINBIND=yes ## -maxdepth 1 # Путь до каталога поиска с уровнем вложения 1 ## Files: ## files # Имена файлов разделённые: , или пробелом или ; -## all # Еквивалентно =gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk +## all # Эквивалентно =gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk ## ACCESS_DENIED_INTERPRETER=all ## ACCESS_DENIED_INTERPRETER[/usr/bin]=gbr3,python,python2,python3,perl,perl6,php,ruby,node,awk,gawk @@ -547,7 +548,7 @@ NSSWITCHWINBIND=yes ## # Номер проекта, цифра, обязательное поле, может принимать значение ## numbers # Произвольный номер состоящий только из цифр ## AUTO # Автоматически генерирует произвольный номер. Если на путь ранее устанавливался номер, то использует старый номер. -## # Имя буквенно проекта, не обязательное поле +## # Имя проекта, не обязательное поле ## # Указывает программное ограничение размера block в файловой системе, предупреждение. Применимо: M(egabyte),G(igabyte),T(erabyte) ## # Указывает жесткое ограничение размера block в файловой системе. Применимо: M(egabyte),G(igabyte),T(erabyte) ## # Указывает программное ограничение inode в файловой системе, предупреждение @@ -569,7 +570,7 @@ NSSWITCHWINBIND=yes ## Получить древовидный список cgroups и запущенных процессов: systemd-cgls --no-page ## Показать монторинг потребляемых ресурсов: systemd-cgtop -c; systemd-cgtop -m ## Показать статус и используемые ограничения: systemctl status user.slice --no-page -## Еденицы измерения: %, K, M, G, T +## Единицы измерения: %, K, M, G, T ## unit: system.slice, user.slice, user-0.slice, user-1000.slice, smb.service, cups.service, httpd.service, ## user: superadmin, user-1 # Системное имя пользователя ## property: @@ -694,10 +695,11 @@ NSSWITCHWINBIND=yes ################################################################################ [/etc/ublinux/desktop] ## User for X autostarting -## Пользователь для автовхода, значения: -## =user_name - включает автовход указанного пользователя -## =yes - включает автовход пользователя с id =${ADMUID} по умолчанию =1000, по умолчанию =superadmin -## если задан параметр ${DISPLAYMANAGER_DEFAULTUSER}, то автовход от пользователя переменной +## Пользователь для автовхода, AUTOLOGINUSER=, значения: +## =user_name # Включает автовход указанного пользователя +## =yes|=enable # Включает автовход пользователя с id =${ADMUID} по умолчанию =1000, по умолчанию =superadmin +## =no|=disable # Принудительно отключить автологин +## Если задан параметр ${DISPLAYMANAGER_DEFAULTUSER}, то автовход от пользователя переменной ## AUTOLOGINUSER=yes # Графическая среда по умолчанию может быть изменена @@ -744,14 +746,26 @@ NSSWITCHWINBIND=yes ## при подключенных модулях станут активны проприетарные драйвера (default no) #FREEVGADRV=no -## Принудительно добавить и установить разрешение монитора в /etc/X11/xorg.conf.d/10-monitor.conf +## Принудительно добавить и установить разрешение монитора в /etc/X11/xorg.conf.d/ ## Перечень имён портов вывода получить по команде: xrandr или xrandr | grep -E "^[A-Z0-9]* connected" | cut -d' ' -f1 ## XORG_MONITOR[VGA1]=1920x1080,1600x1200x60,848x480x60,nodpms ## Примеры имени видео порта: VGA1 HDMI1 DP1 DVI1 LVDS1 TV1 VIRTUAL1 ## =1920x1080 =1920x1080x75 ## cvt , gtf , reduced|r , dpms , nodpms , enable , disable , ignore , primary , ## lo|LeftOf:{name} , ro|RightOf:{name} , ab|Above:{name} , be|Below:{name} , rotate:normal|left|right|invert -#XORG_MONITOR[VGA1]=1920x1080,ro:hdmi1 +## XORG_MONITOR[VGA1]=1920x1080,ro:hdmi1 + +## Принудительно задать дополнительные возможности XORG, XORG_EXT=, значения: +## nodpms # Отключить DPMS на XORG глобально +## dpms # Включить DPMS на XORG глобально +## XORG_EXT=nodpms + +## Принудительно задать DPI, XORG_DPI=, значения: +## =auto # Автоматически выставить DPI относительно максимального разрешения +## =96 # Значение по умолчнию, масштаб 100% +## =144|=2K # Для мониторов 2K, масштаб 150% +## =192|=4K # Для мониторов 4K, масштаб 200% +## XORG_DPI=192 ## драйверы для видеокарт в случае, если проприентарные не доступны или не работают #FAILSAFENVIDIA=fbdev @@ -964,7 +978,7 @@ NSSWITCHWINBIND=yes # Выберите один из вариантов, не включайте сразу 2 переменные сразу # 1 вариант. Может снизить производительность в играх #export __GL_YIELD=USLEEP -# 2 вариант. Не на каждой видео карте может сработать +# 2 вариант. Не на каждой видеокарте может сработать #export KWIN_TRIPLE_BUFFER=1 ################################################################################