#!/usr/bin/env bash # # Initial script for UBLinux # This script are launching before starting init from initrd 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/default; [[ -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}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null 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 #Gnome-shell does not supports compiz, so turn on it only in classic mode and only after desktop started 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 fi # [[ -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 sed -i /COMPOSITING_WM_START/d ${SYSCONF}/config # [[ -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 ${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 ${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(){ 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 ${DESKTOP_FILE_PATH}/default.desktop # cat > ${DESKTOP_FILE_PATH}/default.desktop <> ${SYSCONF}/desktop DESKTOP=none sed -i /DESKTOP=/d ${SYSCONF}/desktop echo "DESKTOP=$DESKTOP" >> ${SYSCONF}/desktop } [ "$(cmdline_parameter 3ddesktop)" ] && switch3don [ "$(cmdline_parameter no3ddesktop)" ] && switch3doff for i in $(cmdline_value desktop | tr , " " ) ;do case $i in 3d) switch3don ;; no3d) switch3doff ;; xfce) DESKTOP=xfce ;; kde) DESKTOP=kde4 ;; gnome) DESKTOP=gnome ;; gnome-shell|gnome3) DESKTOP=gnomeshell ;; lxde) DESKTOP=lxde ;; lxqt) DESKTOP=lxqt ;; i3) DESKTOP=i3 ;; steam) DESKTOP=steam ;; plasma) DESKTOP=plasma ;; plasmax11) DESKTOP=plasmax11 ;; mate) DESKTOP=mate ;; ukui) DESKTOP=ukui ;; pantheon) DESKTOP=pantheon ;; none) DISPLAYMANAGER=none && DESKTOP=none ;; lightdm) DISPLAYMANAGER=lightdm ;; kdm) DISPLAYMANAGER=kdm ;; gdm) DISPLAYMANAGER=gdm ;; slim) DISPLAYMANAGER=slim ;; 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 ;; *) DESKTOP=${i,,} ;; esac done # Disable Display Manager [[ "${DESKTOP}" == "none" || "${DISPLAYMANAGER}" == "none" ]] && DESKTOP="none" && DISPLAYMANAGER="none" && disabledmde # Autodetect Display Manager [[ -z "${DISPLAYMANAGER}" ]] && for i in slim xdm lxdm kdm gdm sddm lightdm; do [[ -f ${ROOTFS}/lib/systemd/system/$i.service ]] && DISPLAYMANAGER=$i done [[ -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 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 [[ -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 # 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 ${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