|
|
|
|
@ -25,81 +25,84 @@ SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
|
|
|
|
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 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
|
|
|
|
|
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
|
|
|
|
|
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
|