blob: 44897e5148572510b6daf0087bdbaa2d036b4ae4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#!/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin
HOME=/root
export HOME
# trap SIGTERM to be able to kill autologin
killed () {
kill -15 $!
exit
}
# Try autologin first, if wanted...
if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
. /etc/sysconfig/autologin
if [ -n "$USER" -a "$AUTOLOGIN" = yes ]; then
# shut down boot splash
[ -x /bin/plymouth ] && /bin/plymouth quit
/usr/sbin/autologin &
echo -n $$ > /var/lock/subsys/dm
wait $!
fi
fi
# we have to assume that /etc/sysconfig/desktop has two variables, DESKTOP
# and DISPLAYMANAGER because administors may prefer a specific DM regardless
# of desktops.
# DISPLAYMANAGER is referenced by this script, and DESKTOP is referenced
# as system-wide default by /etc/X11/Xsession script only when X-session
# is opened by "startx" command.
# when DMs open an X-session, they send DESKTOP, which is in this case
# directly selected by users, as a commandline argument of /etc/X11/Xsession.
# actually Xsession script is only able to know by existance of its first
# argument whether it is called by DM or "startx". see the logic
# in /etc/X11/Xsession.
# If DISPLAYMANAGER is not defined, then assume that it is the same as DESKTOP
dm=
if [ -f /etc/sysconfig/desktop ]; then
. /etc/sysconfig/desktop >/dev/null 2>&1
[ -z "$DISPLAYMANAGER" ] && DISPLAYMANAGER=$DESKTOP
if [ "$DISPLAYMANAGER" = "GDM" -o "$DISPLAYMANAGER" = "gdm" -o "$DISPLAYMANAGER" = "GNOME" -o "$DISPLAYMANAGER" = "gnome" -o "$DISPLAYMANAGER" = "Gnome" ]; then
dm=GNOME
elif [ "$DISPLAYMANAGER" = "KDM" -o "$DISPLAYMANAGER" = "kdm" -o "$DISPLAYMANAGER" = "KDE" -o "$DISPLAYMANAGER" = "kde" ]; then
dm=KDM
elif [ "$DISPLAYMANAGER" = "WDM" -o "$DISPLAYMANAGER" = "wdm" ] ; then
dm=WDM
plymouth_quit=yes
elif [ "$DISPLAYMANAGER" = "XDM" -o "$DISPLAYMANAGER" = "xdm" ] ; then
dm=XDM
plymouth_quit=yes
elif [ "$DISPLAYMANAGER" = "SLiM" -o "$DISPLAYMANAGER" = "slim" ] ; then
dm=SLiM
plymouth_quit=yes
elif [ -n "$DISPLAYMANAGER" ]; then
dm=$DISPLAYMANAGER
plymouth_quit=yes
fi
fi
# shut down boot splash if needed (gdm/kdm do it his internally)
[ -x /bin/plymouth ] && [ "x$plymouth_quit" = "xyes" ] && /bin/plymouth quit
# xdm-like program are launched from the console, however, the locale-setting
# can be done in a way that console is not localize, while X11 is.
# That is handled by the lang.sh script, depending on the existance of
# $DISPLAY or $DESKTOP variable. Now that $DESKTOP is defined resource lang.sh
[ -z "$DESKTOP" ] && DESKTOP=dummy_DESKTOP_variable
# We need to source this so that the login screens get translated
. /etc/profile.d/10lang.sh
[ "$DESKTOP" = "dummy_DESKTOP_variable" ] && unset DESKTOP
preferred=`/etc/X11/lookupdm "$dm"`
if [ -n "$preferred" ]; then
$preferred -nodaemon "$@" >/dev/null 2>&1 &
echo -n $! > /var/run/dm.pid
fi
# catch all exit error
plymouth quit
exit 1
|