summaryrefslogtreecommitdiffstats
path: root/linux/bin/installiere_neo/installiere_neo.1
blob: 2922d541bd9c51dfd435db022e44224b33f2808d (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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
#!/bin/bash
# Copyright 2008 Pascal Hauck <pascal.hauck@web.de>

# NEO-Tastaturbelegung

# ======= Installation =======
# Um NEO auf Ihrem System zu (dauerhaft oder testweise) zu installieren, genügt es, dieses Skript auszuführen
# z.B. in der Konsole die folgenden beiden Zeilen eingeben:
# chmod u+x installiere_neo
# ./installiere_neo
# Für die restliche Installation weden mehrere Optionen angeboten.
# Nach der Installation und Eingabe von ›. starte_neo‹ oder nach dem nächsten Login ist:
# • ein Wechsel von NEO zu QWERTZ ist jederzeit mit ›uiae‹ leicht möglich und
# • ein Wechsel von QWERTZ zu NEO ist jederzeit mit ›asdf‹ ebenso leicht möglich

# Wenn NEO nicht automatisch nach dem Login gestartet werden soll, genügt es, vor die Zeile
# asdf			# mit einem # am Zeilenanfang bleibt QWERTZ das Standardlayout, sonst ist es NEO
# in der Datei $HOME/.profile ein # zu setzen
# Alternativ kann das Skript ›installiere_neo‹ ein weiteres mal aufgerufen werden
# ==============================


# ======= Deinstallation =======
# Um NEO wieder zu deinstallieren, kann das Skript ›installiere_neo‹ ein weiteres Mal aufgerufen werden
# ==============================


# ========= Inhalte ============
# Das Ausführen dieses Skripts erzeugt auf einfache Weise eine vollständige und saubere Installation für einen Benutzer eines Linuxsystems
# Die beinhalteten Komponenten sind:
# • Xmodmap-Tastaturbelegung
# • Textkonsolenbelegung
# • Compose-Erweiterung von NEO
# • die Skripte ›asdf‹, ›uiae‹, um die Belegung zwischen NEO und QWERTZ zu wechseln
# • die Skripte ›num‹ und ›neo‹, um ein Bild der Tastatur zu erzeugen
# • die Referenz
# • die Skripte ›wiemitneo‹ und ›beschreibe‹, um nach Erzeugungsmöglichkeit von Zeichen zu suchen
# • die Konfigurationsdatei neorc.conf
# ==============================

# ======= Bemerkungen ==========
# Es wird immer das Standardverzeichnis $inst_dir verwendet
# Es gibt keine graphische Installation
# Dennoch kann dieses Skrip helfen, NEO auf eine einfache Weise zu installieren.
# Dieses Skript wird mit der Zeit verbessert werden.
# ==============================


# colours in the Bash
normal="\033[0m"
red="\033[31m"
green="\033[32m"

inst_dir=$HOME/neo

# remove the entry in $HOME/.profile
rmfromprofile()
{
	grep -v "^\# NEO:$" $HOME/.profile | grep -v "asdf   \# mit" | grep -v "asdf" > $HOME/profile.neo.tmp
	rm /$HOME/.profile
	mv $HOME/profile.neo.tmp $HOME/.profile
}

# create directories, files and entries
create()
{
	if [ -f $2 ]					# if already exists
	then
		echo -e "Die Datei ${red}$2${normal} gibt es bereits – soll die bestehende Datei überschrieben werden? \c"; read -p "[J,N] " -e overwrite
		if [ "$overwrite" = "J" ]		# overwrite?
		then
			echo "Datei $2 wird überschrieben!"
			rm -f $2			# remove if user wants to overwrite
		else
			echo -e "Datei ${red}$2${normal} gibt es schon → Installation abgebrochen"
			exit
		fi
	fi
	echo "Erstelle Datei $2"			# create
	$1 > $2						# call subroutine $1 and write to file $2
}

## show options if NEO is not installed so far
install_options()
{
	echo "Bislang gibt es kein vollständig konfiguriertes NEO auf Ihrem System"
	echo
	echo "Sie haben folgende Möglichkeiten:"
	echo
	echo " [1]  NEO nur testen"
	echo "       Sie haben die Möglichkeit, NEO zu Testen, ihre Standardbelegung (in der Regel QWERTZ) bleibt erhalten"
	echo
	echo
	echo " [2] NEO als Standardbelegung"
	echo "       Mit dieser Option wird NEO die neue Standardbelegung für diesen Benutzer und nach (nicht vor!) dem"
	echo "       Login automatisch aktiviert"
	echo
	echo
	echo -e " Wenn ${green}installiere_neo${normal} ein weiteres Mal aufgerufen wird, haben weitere Optionen – z.B. die Deinstallation von NEO"
	echo

	installoption=""
	while [ ! $installoption ]			# choose between QWERTZ or NEO as standard
	do						# switch with ›asdf‹ and ›uiae‹
		echo
		read -p "Wählen Sie eine Option [1,2]: " -e installoption
	        case $installoption in
                2)
                        echo
                        echo "Nach dem Login wird NEO die Standardbelegung sein."
                        echo -e "Um dies zu ändern, kann ${green}installiere_neo${normal} ein weiteres Mal ausgeführt werden."
			echo -e ${red}
			read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
			echo -e ${normal}
                        ;;
                1)
                        echo
                        echo "Das Standardlayout wird nicht verändert."
                        echo -e "Zu NEO kann man jederzeit mit der Abrollbewegung ${green}asdf${normal} wechseln."
			echo -e ${red}
			read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
			echo -e ${normal}
                        ;;
                *)
                        echo
                        echo "Bitte wählen Sie die Optionen 1, um NEO zu testen oder 2, um NEO zur Standardbelegung zu machen"
			installoption=""
                        ;;
                esac
	done


	echo
	echo "Installation von NEO mit xmodmap wird gestartet…"
	echo
	echo

# *** main installation process ***
# creating a directory $inst_dir
	if [ -d $inst_dir ]
	then
		echo -e "Das Verzeichnis ${red}$inst_dir${normal} gibt es bereits – wird verwendet…"
	else
		echo -e "Erstelle $inst_dir"
		mkdir $inst_dir
	fi

# creating NEO files in $inst_dir
	create neo_xmodmap $inst_dir/neo_de.xmodmap
	create neo_console $inst_dir/neo.map
	create neo_asdf $inst_dir/asdf
	chmod u+x $inst_dir/asdf
	create neo_uiae $inst_dir/uiae
	chmod u+x $inst_dir/uiae
	create neo_referenz $inst_dir/neo20.txt
	create neo_neo $inst_dir/neo
	chmod u+x $inst_dir/neo
	create neo_num $inst_dir/num
	chmod u+x $inst_dir/num
	create neo_wiemitneo $inst_dir/wiemitneo
	chmod u+x $inst_dir/wiemitneo
	create neo_beschreibe $inst_dir/beschreibe
	chmod u+x $inst_dir/beschreibe

	echo "Ergängze die Compose-Erweiterung von NEO…"
	create neo_compose $inst_dir/Compose.neo
	if [ -f $HOME/.XCompose ]
	then
		echo -e "Die Datei ${red}$HOME/.XCompose${normal} gibt es bereits – soll die bestehende Datei überschrieben werden? \c"; read -p "[J,N] " -e overwrite
		if [ "$overwrite" = "J" ]		# overwrite?
		then
			echo "Datei $HOME/.XCompose wird überschrieben!"
			cat /usr/share/X11/locale/en_US.UTF-8/Compose $inst_dir/Compose.neo > $HOME/.XCompose
		else
			echo -e "Datei ${red}$HOME/.XCompose${normal} bleibt erhalten, jedoch kann die Compos-Erweiterung von NEO nicht genutzt werden."
		fi
	else
		cat /usr/share/X11/locale/en_US.UTF-8/Compose $inst_dir/Compose.neo > $HOME/.XCompose
	fi

	create neorc $HOME/.neorc

# entry in $HOME/.profile with NEO or QWERTZ as standard keyboard layout after login
	case $installoption in 
	2)
		echo
		echo "Nach dem Login wird NEO die Standardbelegung sein."
		echo -e "Um dies zu ändern, kann ${green}installiere_neo${normal} ein weiteres Mal ausgeführt werden."
		rmfromprofile
		profile_neo >> $HOME/.profile
		;;
	1)
		echo
		echo "Das Standardlayout wird nich verändert."
		rmfromprofile
		profile_qwertz >> $HOME/.profile
		;;
	esac
}

# remove files for uninstall option
remove()
{
	echo "Entferne $1"
	rm $1 || echo -e "${red}Konnte die Datei $1 nicht entfernen!${normal}"
}

# remove all directories, files and entries made by ›installiere_neo‹
deinstall()
{
	echo
	echo
	rmfromprofile
	remove $HOME/.neorc
	remove $inst_dir/starte_neo
	remove $inst_dir/Compose.neo
	remove $inst_dir/neo20.txt
	remove $inst_dir/beschreibe
	remove $inst_dir/wiemitneo
	remove $inst_dir/num
	remove $inst_dir/neo
	remove $inst_dir/uiae
	remove $inst_dir/asdf
	remove $inst_dir/neo.map
	remove $inst_dir/neo_de.xmodmap
	echo "Entferne $inst_dir/"
	rmdir $inst_dir/ || echo -e "${red}Konnte das Verzeichenis $inst_dir/ nicht entfernen!${normal}"
}

# show options if NEO is already installed
deinstall_options()
{
	echo "Es gibt auf Ihrem System bereits eine Konfiguration für NEO."
	echo
	echo "Sollte NEO nur für diesen Benutzer installiert sein, haben folgende Möglichkeiten:"
	echo
	echo " [1]  NEO zukünftig nicht mehr als Standardbelegung"
	echo -e "       NEO wird nicht länger direkt nach dem Login zur Verfügung stehen, wohl aber nach Eingabe von ${green}adsf${normal}."
	echo
	echo
	echo " [2] NEO vollständig vom System entfernen"
	echo "       Dieso Option entfernt alle zuvor angelegten Verzeichnisse, Datein und Einträge zur NEO-Belegung"
	echo
	echo
	echo -e " Diese Optionen funktionieren nur dann zuverlässig, wenn NEO auch mit ${green}installiere_neo${normal} installiert wurde"
	echo

	deinstalloption=""
	while [ ! $deinstalloption ]					# choose between deleting NEO as standard layout or delete NEO at all
	do								# if deleted as standard layout only, ›asdf‹ is still working
		echo
		read -p "Wählen Sie eine Option [1,2]: " -e deinstalloption
	        case $deinstalloption in
                2)
                        echo
                        echo -e "Alle zuvor von ${green}installiere_neo${normal} vorgenommen Änderungen am System werden gelöscht!"
			echo -e ${red}
			read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
			echo -e ${normal}
			cd $inst_dir
			./uiae
			deinstall					# full deinstallation
			echo
			echo -e "Alle von ${green}installiere_neo${normal} gemachten Änderungen an Ihrem System wurden entfernt."
                        ;;
                1)
                        echo
                        echo "NEO wird als Standardbelegung entfernt"
                        echo -e "Zu NEO kann man weiterhin jederzeit mit der Abrollbewegung ${green}asdf${normal} wechseln."
			echo -e ${red}
			read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
			echo -e ${normal}
			echo
			rmfromprofile					# alter the entry in $HOME/.profile; first: remove old entry
			profile_qwertz >> $HOME/.profile		# write the new entry
			echo
			echo "Nach dem nächsten Login wird NEO nicht mehr die Standardbelegung sein. "
                        ;;
                *)
                        echo
                        echo "Bitte wählen Sie die Optionen 1, um NEO nicht länger als Standardbelegung zu nutzen"
			echo " oder 2, um NEO vollständig zu entfernen"
			deinstalloption=""
                        ;;
                esac
	done
}