source: trunk/debirf/fs/usr/share/debirf/modules/xkiosk @ 927

Last change on this file since 927 was 927, checked in by jrollins, 5 years ago

debirf: added new network-dhcp module. changed name of old networking
module. moved variable export to setup_environment function.

  • Property svn:executable set to *
File size: 3.1 KB
Line 
1#!/bin/bash -e
2
3# debirf module: xkiosk
4# create an graphical kiosk that starts x and a browser on boot.
5#
6# Depends: network-dhcp module, install-runit module
7#
8# The debirf scripts were written by
9# Jameson Rollins <jrollins@fifthhorseman.net>
10# and
11# Daniel Kahn Gillmor <dkg-debian.org@fifthhorseman.net>.
12#
13# They are Copyright 2007, and are all released under the GPL,
14# version 3 or later.
15
16### download needed packages
17# could maybe pick and choose xorg packages if hardware known
18debirf_exec apt-get install --assume-yes xorg matchbox-window-manager iceweasel
19
20### properly configure X
21# allow any user to start X (not just from command line):
22# ("debirf_exec dpkg-reconfigure x11-common")
23cat <<EOF > "$DEBIRF_ROOT"/etc/X11/Xwrapper.config
24allowed_users=anybody
25nice_value=0
26EOF
27
28# make standard xorg.conf
29cat <<EOF > "$DEBIRF_ROOT"/etc/X11/xorg.conf
30Section "Files"
31EndSection
32Section "InputDevice"
33        Identifier      "Generic Keyboard"
34        Driver          "kbd"
35        Option          "CoreKeyboard"
36        Option          "XkbRules"      "xorg"
37        Option          "XkbModel"      "pc104"
38        Option          "XkbLayout"     "us"
39EndSection
40Section "InputDevice"
41        Identifier      "Configured Mouse"
42        Driver          "mouse"
43        Option          "CorePointer"
44        Option          "Device"                "/dev/input/mice"
45        Option          "Protocol"              "ImPS/2"
46        Option          "Emulate3Buttons"       "true"
47EndSection
48Section "Device"
49        Identifier      "Generic Video Card"
50        Driver          "vesa"
51        BusID           "PCI:1:0:0"
52EndSection
53Section "Monitor"
54        Identifier "VGA"
55EndSection
56Section "Screen"
57        Identifier      "Default Screen"
58        Device          "Generic Video Card"
59        Monitor         "VGA"
60        DefaultDepth    24
61        SubSection "Display"
62                Modes           "1280x1024" "1024x768" "800x600"
63        EndSubSection
64EndSection
65Section "ServerLayout"
66        Identifier      "Default Layout"
67        Screen          "Default Screen"
68        InputDevice     "Generic Keyboard"
69        InputDevice     "Configured Mouse"
70EndSection
71EOF
72
73### add guest user
74if ! debirf_exec getent passwd guest >/dev/null 2>/dev/null ; then
75    debirf_exec adduser --disabled-password --gecos "Kiosk User,,," guest
76fi
77
78### configure runit service dir to start X session
79RUNIT_DIR=/srv/xkiosk
80RUNIT_DIR_DEBIRF="${DEBIRF_ROOT}/${RUNIT_DIR}"
81
82mkdir -p "$RUNIT_DIR_DEBIRF"/{env,log/main}
83debirf_exec chown guest:guest "$RUNIT_DIR"/log/main
84
85echo guest > "$RUNIT_DIR_DEBIRF"/env/UID
86echo guest > "$RUNIT_DIR_DEBIRF"/env/GID
87echo /home/guest > "$RUNIT_DIR_DEBIRF"/env/HOME
88
89# creat run script
90# guest users starts X
91cat <<EOF > "$RUNIT_DIR_DEBIRF"/run
92#!/bin/sh
93exec 2>&1
94exec chpst -u guest:audio:video -e env /usr/bin/startx
95EOF
96debirf_exec chmod a+x "$RUNIT_DIR"/run
97
98# create log run script
99cat <<EOF > "$RUNIT_DIR_DEBIRF"/log/run
100#!/bin/sh
101exec chpst -u guest svlogd -tt ./main
102EOF
103debirf_exec chmod a+x "$RUNIT_DIR"/log/run
104
105# link in service dir
106debirf_exec ln -sf "$RUNIT_DIR" /var/service/
107
108### make xinitrc
109# for guest user, loads window manager and browser
110cat <<EOF > "$DEBIRF_ROOT"/home/guest/.xinitrc
111#!/bin/sh
112xsetroot -solid blue
113matchbox-window-manager &
114TARG=http://cmrg.fifthhorseman.net/wiki/debirf
115if (grep -q 'browse=' </proc/cmdline) ; then
116  TARG=\$( sed 's/.*browse=\([^[:space:]]*\).*/\1/' </proc/cmdline)
117fi
118iceweasel \$TARG
119EOF
120
121# set permissions on /home/guest, just in case
122debirf_exec chown -R guest:guest /home/guest
Note: See TracBrowser for help on using the repository browser.