Fix options desktop and auto printer detect

master
Dmitry Razumov 1 year ago
parent b2db6adaab
commit 1f36bfed4b
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -268,6 +268,6 @@ AUTOINSTALL[part_size]="16G"
AUTOINSTALL[part_fs_type]="ext4"
AUTOINSTALL[user_name]="superadmin"
AUTOINSTALL[user_gecos]="Administrator"
AUTOINSTALL[user_password]="ublinux"
AUTOINSTALL[user_password]='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
AUTOINSTALL[log]=yes

@ -23,83 +23,86 @@ SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
[[ -f ${ROOTFS}/etc/inittab ]] && sed -i 's/id:.:initdefault:/id:5:initdefault:/' ${ROOTFS}/etc/inittab
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
if [[ -x ${ROOTFS}/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
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
# [[ -f usr/lib/libDrakX/harddrake/autoconf.pm ]] && sed -i 's/^ *Xconfig::glx::write({});$/# Xconfig::glx::write({});/' ${ROOTFS}/usr/lib/libDrakX/harddrake/autoconf.pm
[[ -f etc/xdg/kwinrc ]] && sed -i s/^Enabled=.*/Enabled=false/ ${ROOTFS}/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
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
# [[ -f usr/lib/libDrakX/harddrake/autoconf.pm ]] && sed -i 's/^# Xconfig::glx::write({});$/ Xconfig::glx::write({});/' ${ROOTFS}/usr/lib/libDrakX/harddrake/autoconf.pm
[[ -f etc/xdg/kwinrc ]] && sed -i s/^Enabled=.*/Enabled=true/ ${ROOTFS}/etc/xdg/kwinrc
}
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
if [[ -f ${ROOTFS}/lib/systemd/system/$1.service ]]; then
ln -sf /lib/systemd/system/$1.service ${ROOTFS}/etc/systemd/system/display-manager.service
ln -sf /lib/systemd/system/graphical.target ${ROOTFS}/etc/systemd/system/default.target
[[ -f ${SYSCONF}/desktop ]] && sed -i /DISPLAYMANAGER=/d ${SYSCONF}/desktop
echo "DISPLAYMANAGER=${1%%-plymouth*}" >> ${SYSCONF}/desktop
case ${1%%-plymouth*} in
lightdm)
# FIX lightdm-greater
mkdir -p usr/libexec
ln -sf /usr/lib/at-spi-bus-launcher usr/libexec/at-spi-bus-launcher
ln -sf init usr/bin/systemd
mkdir -p ${ROOTFS}/usr/libexec
ln -sf /usr/lib/at-spi-bus-launcher ${ROOTFS}/usr/libexec/at-spi-bus-launcher
ln -sf init ${ROOTFS}/usr/bin/systemd
;;
esac
fi
}
setupde(){
if [[ -f usr/share/xsessions/$1.desktop ]] ;then
local DESKTOP=$1
local DESKTOP_FILE=$2
local DESKTOP_FILE_PATH=${DESKTOP_FILE%/*}
if [[ -f ${DESKTOP_FILE} ]] ;then
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 <<EOF
# ln -sf $1.desktop ${DESKTOP_FILE_PATH}/default.desktop
# cat > ${DESKTOP_FILE_PATH}/default.desktop <<EOF
#[Desktop Entry]
#Encoding=UTF-8
#Name=DEFAULT
#Name[ru]=Сеанс по умолчанию (${1})
#Comment=Default UBLinux Session
#Comment[ru]=Предопределённая рабочая среда пользователя
#Exec=gtk-launch /usr/share/xsessions/${1}.desktop
#Exec=gtk-launch ${DESKTOP_FILE_PATH}/${1}.desktop
#Icon=
#Type=Application
#EOF
cp -a usr/share/xsessions/$1.desktop usr/share/xsessions/default.desktop
sed -i "s/Name=.*/Name=Default Session \(${1}\)/" usr/share/xsessions/default.desktop
sed -i "s/Name\[ru\]=.*/Name\[ru\]=Сеанс по умолчанию \(${1}\)/" usr/share/xsessions/default.desktop
[[ -d etc/X11/wmsession.d ]] && ln -sf /usr/share/xsessions/default.desktop etc/X11/wmsession.d/00DEFAULT
[[ -d etc/X11/dm/Sessions ]] && ln -sf /usr/share/xsessions/default.desktop etc/X11/dm/Sessions/00DEFAULT.desktop
#[ -d etc/X11/wmsession.d ] && cp -pf /usr/share/xsessions/default.desktop etc/X11/wmsession.d/00DEFAULT
#[ -d etc/X11/dm/Sessions ] && cp -pf /usr/share/xsessions/default.desktop etc/X11/dm/Sessions/00DEFAULT.desktop
cp -a ${DESKTOP_FILE_PATH}/$1.desktop ${DESKTOP_FILE_PATH}/default.desktop
sed -i "s/Name=.*/Name=Default Session \(${1}\)/" ${DESKTOP_FILE_PATH}/default.desktop
sed -i "s/Name\[ru\]=.*/Name\[ru\]=Сеанс по умолчанию \(${1}\)/" ${DESKTOP_FILE_PATH}/default.desktop
[[ -d etc/X11/wmsession.d ]] && ln -sf /${DESKTOP_FILE_PATH}/default.desktop etc/X11/wmsession.d/00DEFAULT
[[ -d etc/X11/dm/Sessions ]] && ln -sf /${DESKTOP_FILE_PATH}/default.desktop etc/X11/dm/Sessions/00DEFAULT.desktop
#[ -d etc/X11/wmsession.d ] && cp -pf /${DESKTOP_FILE_PATH}/default.desktop etc/X11/wmsession.d/00DEFAULT
#[ -d etc/X11/dm/Sessions ] && cp -pf /${DESKTOP_FILE_PATH}/default.desktop etc/X11/dm/Sessions/00DEFAULT.desktop
case $1 in
xfce)
# FIX xfce.screensaver add button
[[ -f usr/share/dbus-1/services/org.xfce.ScreenSaver.service ]] && rm -f usr/share/dbus-1/services/org.xfce.ScreenSaver.service
[[ -f etc/xdg/autostart/xscreensaver.desktop ]] && rm -f etc/xdg/autostart/xscreensaver.desktop
[[ -f ${ROOTFS}/usr/share/dbus-1/services/org.xfce.ScreenSaver.service ]] && rm -f ${ROOTFS}/usr/share/dbus-1/services/org.xfce.ScreenSaver.service
[[ -f ${ROOTFS}/etc/xdg/autostart/xscreensaver.desktop ]] && rm -f ${ROOTFS}/etc/xdg/autostart/xscreensaver.desktop
;;
esac
fi
}
disabledmde(){
[ -f etc/inittab ] && sed -i 's/id:.:initdefault:/id:3:initdefault:/' etc/inittab
ln -sf /lib/systemd/system/multi-user.target etc/systemd/system/default.target
[[ -f ${ROOTFS}/etc/inittab ]] && sed -i 's/id:.:initdefault:/id:3:initdefault:/' ${ROOTFS}/etc/inittab
ln -sf /lib/systemd/system/multi-user.target ${ROOTFS}/etc/systemd/system/default.target
DISPLAYMANAGER=none
sed -i /DISPLAYMANAGER=/d ${SYSCONF}/desktop
echo "DISPLAYMANAGER=$DISPLAYMANAGER" >> ${SYSCONF}/desktop
echo "DISPLAYMANAGER=${DISPLAYMANAGER}" >> ${SYSCONF}/desktop
DESKTOP=none
sed -i /DESKTOP=/d ${SYSCONF}/desktop
echo "DESKTOP=$DESKTOP" >> ${SYSCONF}/desktop
@ -121,6 +124,7 @@ for i in $(cmdline_value desktop | tr , " " ) ;do
i3) DESKTOP=i3 ;;
steam) DESKTOP=steam ;;
plasma) DESKTOP=plasma ;;
plasmax11) DESKTOP=plasmax11 ;;
mate) DESKTOP=mate ;;
ukui) DESKTOP=ukui ;;
pantheon) DESKTOP=pantheon ;;
@ -143,29 +147,38 @@ done
# Autodetect Display Manager
[[ -z "${DISPLAYMANAGER}" ]] && for i in slim xdm lxdm kdm gdm sddm lightdm; do
[[ -f lib/systemd/system/$i.service ]] && DISPLAYMANAGER=$i
[[ -f ${ROOTFS}/lib/systemd/system/$i.service ]] && DISPLAYMANAGER=$i
done
[[ -f lib/systemd/system/${DISPLAYMANAGER}-plymouth.service ]] && setupdm ${DISPLAYMANAGER}-plymouth && rm -f lib/systemd/system/${DISPLAYMANAGER}.service || setupdm ${DISPLAYMANAGER}
[[ -f ${ROOTFS}/lib/systemd/system/${DISPLAYMANAGER}-plymouth.service ]] && setupdm ${DISPLAYMANAGER}-plymouth && rm -f ${ROOTFS}/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 pantheon mate gnome gnomeshell plasma; do
[[ -f usr/share/wayland-sessions/$i.desktop ]] && DESKTOP=$i
[[ -f usr/share/xsessions/$i.desktop ]] && DESKTOP=$i
[[ -z ${DESKTOP} ]] && for SELECT_DESKTOP in i3 ukui steam lxde lxqt kde4 xfce pantheon mate gnome gnomeshell plasmax11; do
[[ -f "${ROOTFS}/usr/share/xsessions/${SELECT_DESKTOP}.desktop" ]] && DESKTOP="${SELECT_DESKTOP}"
done
setupde ${DESKTOP,,}
[[ -z ${DESKTOP} ]] && for SELECT_DESKTOP in gnome plasma; do
[[ -f "${ROOTFS}/usr/share/wayland-sessions/${SELECT_DESKTOP}.desktop" ]] && DESKTOP="${SELECT_DESKTOP}"
done
if [[ -n ${DESKTOP} ]]; then
if [[ -f "${ROOTFS}/usr/share/xsessions/${DESKTOP}.desktop" ]]; then
DESKTOP_FILE="${ROOTFS}/usr/share/xsessions/${DESKTOP}.desktop"
elif [[ -f "${ROOTFS}/usr/share/wayland-sessions/${DESKTOP}.desktop" ]]; then
DESKTOP_FILE="${ROOTFS}/usr/share/wayland-sessions/${DESKTOP}.desktop"
fi
setupde ${DESKTOP,,} ${DESKTOP_FILE}
fi
[[ -z "${DISPLAYMANAGER}" && -z "${DESKTOP}" ]] && disabledmde
#[[ -z "${DISPLAYMANAGER}" && -z "${DESKTOP}" ]] && disabledmde
# Set default user to Display Manager
if [[ ${DISPLAYMANAGER} == "lightdm" && -n ${DISPLAYMANAGER_DEFAULTUSER} ]]; then
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
chown -Rf 41:41 var/lib/lightdm/
chmod 1770 var/lib/lightdm/
chmod 755 var/lib/lightdm/.cache/lightdm-gtk-greeter/
chmod 644 var/lib/lightdm/.cache/lightdm-gtk-greeter/state
mkdir -p ${ROOTFS}/var/lib/lightdm/.cache/lightdm-gtk-greeter/
echo "[greeter]" > ${ROOTFS}/var/lib/lightdm/.cache/lightdm-gtk-greeter/state
echo "last-user=${DISPLAYMANAGER_DEFAULTUSER}" >> ${ROOTFS}/var/lib/lightdm/.cache/lightdm-gtk-greeter/state
chown -Rf 41:41 ${ROOTFS}/var/lib/lightdm/
chmod 1770 ${ROOTFS}/var/lib/lightdm/
chmod 755 ${ROOTFS}/var/lib/lightdm/.cache/lightdm-gtk-greeter/
chmod 644 ${ROOTFS}/var/lib/lightdm/.cache/lightdm-gtk-greeter/state
fi

@ -21,7 +21,7 @@ EOF
)
init_printer(){
echo "${DEVNAME}" | grep -q "/dev/usb/lp" && DEVNAME="sys$(udevadm info -a -n ${DEVNAME} 2>/dev/null | grep "looking at" | head -1 | cut -d\' -f2 | sed "s/\/usbmisc.*//")"
echo "${DEVNAME}" | grep -q "/dev/usb/lp" && DEVNAME="$(udevadm info -a -n ${DEVNAME} 2>/dev/null | grep "looking at" | head -1 | cut -d\' -f2 | sed "s/\/usbmisc.*//")"
[[ -z "${DEVNAME}" ]] && echo "$(date '+%m.%d.%Y %T'): $0 : ${ACTION} : ERROR : Not found DEVICE ${DEVNAME}"; [[ -z "${DEVNAME}" ]] && exit 1
# INFODEV="$(udevadm info -a -n ${DEVNAME} 2>/dev/null)"
# DEV_IDPRODUCT="$(echo "${INFODEV}" | grep ATTRS{idProduct} | head -1 | grep -o '".*"' | tr -d '"' 2>/dev/null)"

@ -17,10 +17,10 @@
init_printer(){
echo "${DEVNAME}" | grep -q "/dev/usb/lp" && DEVNAME="$(udevadm info -a -n ${DEVNAME} 2>/dev/null | grep "looking at" | head -1 | cut -d\' -f2 | sed "s/\/usbmisc.*//")"
[[ -z "${DEVNAME}" ]] && echo "$(date '+%m.%d.%Y %T') : $0 : ${ACTION} : ERROR : Not found DEVICE ${DEVNAME}"; [[ -z "${DEVNAME}" ]] && exit 1
DEV_IDPRODUCT="$(cat /sys/${DEVNAME}/../idProduct)"
DEV_IDVENDOR="$(cat /sys/${DEVNAME}/../idVendor)"
DEV_SERIAL="$(cat /sys/${DEVNAME}/../serial)"
DEV_IEEE1284_ID="$(cat /sys/${DEVNAME}/ieee1284_id | head -1 | tr ";" "\n")"
DEV_IDPRODUCT="$(cat /${DEVNAME}/../idProduct)"
DEV_IDVENDOR="$(cat /${DEVNAME}/../idVendor)"
DEV_SERIAL="$(cat /${DEVNAME}/../serial)"
DEV_IEEE1284_ID="$(cat /${DEVNAME}/ieee1284_id | head -1 | tr ";" "\n")"
PRINTER_MFG="$(echo "${DEV_IEEE1284_ID}" | grep MFG | head -1 | cut -d: -f2 2>/dev/null)"
PRINTER_MDL="$(echo "${DEV_IEEE1284_ID}" | grep MDL | head -1 | cut -d: -f2 2>/dev/null)"
PRINTER_CMD="$(echo "${DEV_IEEE1284_ID}" | grep CMD | head -1 | cut -d: -f2 2>/dev/null)"
@ -29,10 +29,10 @@ init_printer(){
PRINTER_NAME="$(echo "${PRINTER_MDL}" | tr "/" "-" | tr " " "-" 2>/dev/null)"
PRINTER_NAME_PPD="$(echo "${PRINTER_MDL}" | tr " " "-" 2>/dev/null)"
for WAIT_TIME in 1 2 3 4; do
PRINTER_LP=$(basename $(ls -Udb /sys/${DEVNAME}/usbmisc/lp* 2>/dev/null | head -1) 2>/dev/null)
PRINTER_LP=$(basename $(ls -Udb /${DEVNAME}/usbmisc/lp* 2>/dev/null | head -1) 2>/dev/null)
[[ -z ${PRINTER_LP} ]] && sleep ${WAIT_TIME} || break
done
# PRINTER_LP="/dev/$(cat /sys/${DEVNAME}/usbmisc/*/uevent | grep DEVNAME | cut -d= -f2)"
# PRINTER_LP="/dev/$(cat /${DEVNAME}/usbmisc/*/uevent | grep DEVNAME | cut -d= -f2)"
PRINTER_LP="/dev/usb/${PRINTER_LP}"
[[ ${PRINTER_MDL} == "LBP810" ]] && PRINTER_MDL="LBP1120"
echo "$(date '+%m.%d.%Y %T') : $0 : init_printer : ${ACTION} : ${DEVNAME} : ${DEV_IDPRODUCT}:${DEV_IDVENDOR} : ${PRINTER_MFG} : ${PRINTER_MDL} : ${PRINTER_CMD} : ${PRINTER_CLS} : ${DEV_SERIAL} : ${PRINTER_NAME} : ${PRINTER_LP}"

@ -1390,6 +1390,7 @@ NSSWITCHWINBIND=yes
## Настройка сервисов окружения рабочего стола
################################################################################
## Пользователь для автовхода
## Если установлено несколько экранных менеджеров DM, то для автовхода необходимо указать конкретно DESKTOP=
## AUTOLOGINUSER=<user_name>|enable|yes|disable|no
## <user_name> # Включает автовход указанного пользователя
## yes|enable # Включает автовход пользователя с id =${ADMUID} по умолчанию =1000, по умолчанию =superadmin
@ -1403,7 +1404,8 @@ NSSWITCHWINBIND=yes
## xfce #
## lxde # Быстрая среда для слабых компьютеров
## gnome # Альтернативная среда для средних и мощных машин
## plasma # Альтернативная среда для мощных машин
## plasma # Альтернативная среда для мощных машин на Wayland
## plasmax11 # Альтернативная среда для мощных машин на X11
## pantheon # Pantheon альтернативная среда для средних и мощных машин
## <other> # Любая среда установленная в систему
## DESKTOP=none

@ -17,6 +17,6 @@ ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", ENV{INTERFACE}=
# 7/1/2 - device with bidirectional USB, managed by usb backend
# 7/1/3 - device with special USB protocol, managed by hp backend
# 7/1/4 - device with IPP over USB protocol, managed by ipp-usb daemon
ACTION=="remove", SUBSYSTEM=="usb", ENV{INTERFACE}=="7/1/*", ENV{INTERFACE}!="7/1/4", RUN+="/usr/lib/ublinux/scripts/printers_setup.sh remove sys%p"
ACTION=="remove", SUBSYSTEM=="usb", ENV{INTERFACE}=="7/1/*", ENV{INTERFACE}!="7/1/4", RUN+="/usr/lib/ublinux/scripts/printers_setup.sh remove %p"
#ACTION=="remove", SUBSYSTEM=="usb", ENV{INTERFACE}=="7/1/*", ENV{INTERFACE}!="7/1/4", TAG+="systemd"

Loading…
Cancel
Save