summaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
blob: 116bb278bc9b0314543c7d0dcfab43f8108d9bbc (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
#!/bin/sh
#
### BEGIN INIT INFO
# Provides: xserver
# Required-Start: $local_fs $remote_fs dbus
# Required-Stop: $local_fs $remote_fs
# Default-Start:     5
# Default-Stop:      0 1 2 3 6
### END INIT INFO

killproc() {            # kill the named process(es)
        pid=`/bin/pidof $1`
        [ "$pid" != "" ] && kill $pid
}

read CMDLINE < /proc/cmdline
for x in $CMDLINE; do
        case $x in
        x11=false)
		echo "X Server disabled" 
		exit 0;
                ;;
        esac
done

case "$1" in
  start)
       . /etc/profile

       #default for USER
       . /etc/default/xserver-nodm
       echo "Starting Xserver"
       if [ "$USER" != "root" ]; then
           # setting for rootless X
           chmod o+w /var/log
           chmod g+r /dev/tty[0-3]
           # hidraw device is probably needed
           if [ -e /dev/hidraw0 ]; then
               chmod o+rw /dev/hidraw*
           fi
           # Make sure that the Xorg has the cap_sys_admin capability which is
           # needed for setting the drm master
           if ! grep -q "^auth.*pam_cap\.so" /etc/pam.d/su; then
               echo "auth	optional	pam_cap.so" >>/etc/pam.d/su
           fi
           if ! /usr/sbin/getcap $XSERVER |  grep -q cap_sys_admin; then
               /usr/sbin/setcap cap_sys_admin+eip $XSERVER
           fi
       fi

       # Using su rather than sudo as latest 1.8.1 cause failure [YOCTO #1211]
       su -l -c '/etc/xserver-nodm/Xserver &' $USER
       # Wait for the desktop to say its finished loading
       # before loading the rest of the system
       # dbus-wait org.matchbox_project.desktop Loaded
  ;;

  stop)
        echo "Stopping XServer"
        killproc xinit
        sleep 1
        chvt 1 &
  ;;

  restart)
	$0 stop
        $0 start
  ;;

  *)
        echo "usage: $0 { start | stop | restart }"
  ;;
esac

exit 0