summaryrefslogtreecommitdiff
path: root/scripts/live-bottom/30accessibility
blob: 3c51fa0362ec70745ffb42df11d1458139751894 (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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#!/bin/sh

#set -e

# initramfs-tools header

PREREQ=""

prereqs()
{
	echo "${PREREQ}"
}

case "${1}" in
	prereqs)
		prereqs
		exit 0
		;;
esac

# live-initramfs header

if [ -n "${NOACCESSIBILITY}" ]
then
	exit 0
fi

. /scripts/live-functions

if [ -z "${USERNAME}" ]
then
	echo "No default user for accessibility options."
	exit 0
fi

log_begin_msg "Configuring accessibility options"

# live-initramfs script

gconf_version=$(chroot /root /usr/bin/dpkg-query -W --showformat='${Version}' gconf2 2>/dev/null) || gconf_version=""

gct ()
{
	if [ "${gconf_version}" ]
	then
		chroot /root sudo -u "${USERNAME}" gconftool-2 "${@}"
	fi
}

remove_applet ()
{
	# Code to remove an applet from the default panel setup
	# This is rather hacky, but I can't think of a one or two line regular
	# expression to do this any more efficiently. Patches welcome. In
	# addition, setting these via gconf also doesn't work for some reason.

	local line_no prior_line next_line

	line_no="$(grep -n "<string>$1</string>" /root/usr/share/gconf/defaults/05_panel-default-setup.entries | cut -f 1 -d :)"
	prior_line="$((line_no-1))"
	next_line="$((line_no+1))"

	sed -i -n "${prior_line},${next_line}!p" /root/usr/share/gconf/defaults/05_panel-default-setup.entries

	chroot /root update-gconf-defaults
}

case ${ACCESS} in
	access=v1)
		# Lesser Visual Impairment
		gct -s -t string /desktop/gnome/interface/gtk_theme HighContrastLargePrint
		gct -s -t string /desktop/gnome/interface/icon_theme HighContrast
		gct -s -t string /desktop/gnome/interface/monospace_font_name "monospace 18"
		gct -s -t string /desktop/gnome/interface/font_name "sans 18"
		gct -s -t string /apps/metacity/general/theme Atlanta
		gct -s -t string /desktop/gnome/background/picture_filename ""
		gct -s -t string /desktop/gnome/background/picture_options none
		gct -s -t string /desktop/gnome/background/primary_color \#666666
		gct -s -t string /desktop/gnome/background/secondary_color \#7F7F7F
		gct -s -t string /desktop/gnome/background/color_shading_type solid
		gct -s -t int /desktop/gnome/peripherals/mouse/cursor_size 48
		gct -s -t string /desktop/gnome/peripherals/mouse/cursor_theme whiteglass
		;;

	access=v2)
		# Moderate Visual Impairment
		gct -s -t bool /desktop/gnome/interface/accessibility true
		gct -s -t bool /desktop/gnome/applications/at/visual/startup true
		gct -s -t string /desktop/gnome/applications/at/visual/exec orca
		gct -s -t bool /apps/gksu/disable-grab true
		gct -s -t string /desktop/gnome/applications/window_manager/default /usr/bin/metacity
		sed -i -e 's/# Host alias specification/Defaults\tenv_keep = "ORBIT_SOCKETDIR XDG_SESSION_COOKIE GTK_MODULES"\n\n# Host alias specification/g' /root/etc/sudoers

		if [ -x /root/usr/bin/orca ]
		then
			mkdir -p /root/home/${USERNAME}/.orca
			echo "import orca.settings" >> /root/home/${USERNAME}/.orca/user-settings.py
			echo "orca.settings.enableSpeech = False" >> /root/home/${USERNAME}/.orca/user-settings.py
			echo "orca.settings.enableMagnifier = True" >> /root/home/${USERNAME}/.orca/user-settings.py
			chroot /root chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}/.orca
		fi
		;;

	access=v3)
		# Blindness
		# Disabled for now, until we know eSpeak works.
		#gct -s -t bool /desktop/gnome/sound/enable_esd false
		gct -s -t bool /desktop/gnome/interface/accessibility true
		gct -s -t bool /desktop/gnome/applications/at/visual/startup true
		gct -s -t string /desktop/gnome/applications/at/visual/exec orca
		gct -s -t bool /apps/gksu/disable-grab true
		gct -s -t string /desktop/gnome/applications/window_manager/default /usr/bin/metacity
		sed -i -e 's/# Host alias specification/Defaults\tenv_keep = "ORBIT_SOCKETDIR XDG_SESSION_COOKIE GTK_MODULES"\n\n# Host alias specification/g' /root/etc/sudoers

		remove_applet fast_user_switch
		if [ -x /root/usr/bin/pulse-session ]
		then
			touch /root/home/$USERNAME/.pulse_a11y_nostart
			chroot /root chown $USERNAME.$USERNAME /home/$USERNAME/.pulse_a11y_nostart
			mkdir -p /root/home/$USERNAME/.pulse
			echo "autospawn = no" > /root/home/$USERNAME/.pulse/client.conf
			chroot /root chown -R $USERNAME.$USERNAME /home/$USERNAME/.pulse
		fi
		if [ -x /root/usr/bin/orca ]
		then
			mkdir -p /root/home/$USERNAME/.orca
			chroot /root chown -R $USERNAME.$USERNAME /home/$USERNAME/.orca
		fi
		;;

	braille=ask)
		# Braille
		gct -s -t bool /desktop/gnome/interface/accessibility true
		gct -s -t bool /desktop/gnome/applications/at/visual/startup true
		gct -s -t string /desktop/gnome/applications/at/visual/exec orca
		gct -s -t bool /apps/gksu/disable-grab true
		gct -s -t string /desktop/gnome/applications/window_manager/default /usr/bin/metacity
		sed -i -e 's/# Host alias specification/Defaults\tenv_keep = "ORBIT_SOCKETDIR XDG_SESSION_COOKIE GTK_MODULES"\n\n# Host alias specification/g' /root/etc/sudoers

		if [ -x /root/usr/bin/orca ]
		then
			mkdir -p /root/home/${USERNAME}/.orca
			echo "import orca.settings" >> /root/home/${USERNAME}/.orca/user-settings.py
			echo "orca.settings.enableSpeech = False" >> /root/home/${USERNAME}/.orca/user-settings.py
			echo "orca.settings.enableBraille = True" >> /root/home/${USERNAME}/.orca/user-settings.py
			laptop_detect
			chroot /root chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}/.orca
		fi

		if [ -x /root/usr/bin/pulse-session ]
		then
			touch /root/home/$USERNAME/.pulse_a11y_nostart
			chroot /root chown $USERNAME.$USERNAME /home/$USERNAME/.pulse_a11y_nostart
			mkdir -p /root/home/$USERNAME/.pulse
			echo "autospawn = no" > /root/home/$USERNAME/.pulse/client.conf
			chroot /root chown -R $USERNAME.$USERNAME /home/$USERNAME/.pulse
		fi

		remove_applet fast_user_switch
		;;

	access=m1)
		# Minor Motor Difficulties
		gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true
		gct -s -t bool /desktop/gnome/accessibility/keyboard/mousekeys_enable true
		gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true
		gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep true
		gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false
		gct -s -t bool /desktop/gnome/peripherals/keyboard/repeat true
		gct -s -t int /desktop/gnome/peripherals/keyboard/delay 700
		gct -s -t int /desktop/gnome/peripherals/keyboard/rate 10
		gct -s -t bool /apps/gksu/disable-grab true

		if [ -e /root/etc/xdg/xfce4/mcs_settings/keyboard.xml ]
		then
			sed -i 's/0/1/' /root/etc/xdg/xfce4/mcs_settings/keyboard.xml
		fi
		;;

	access=m2)
		# Motor Difficulties - pointing devices
		gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true
		gct -s -t bool /desktop/gnome/interface/accessibility true
		gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true
		gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep false
		gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false
		gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [onboard]

		if [ -e /root/etc/xdg/xfce4/mcs_settings/keyboard.xml ]
		then
			sed -i '/Sticky/ s/0/1/' /root/etc/xdg/xfce4/mcs_settings/keyboard.xml
		fi
		;;
esac

log_end_msg