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
288
289
290
|
#!/bin/bash
# Copyright 2008 Pascal Hauck <pascal.hauck@web.de>
# Distributed under the terms of the GNU General Public License v3
# ======= Installation =======
# Um NEO auf Ihrem System zu (dauerhaft) zu installieren, genügt es, dieses Skript auszuführen
# z.B. in der Konsole die folgenden beiden Zeilen eingeben:
# chmod u+x installation
# ./installation
# Nun ist NEO auf Ihrem System dauerhaft installier
# Ein Wechsel zurück zu QWERTZ ist jederzeit mit ›uiae‹ leicht möglich
# Wenn NEO nicht automatisch nach dem Login gestartet werden soll, genügt es, vor die Zeile, die mit
# asdf # mit einem # am Zeilenanfang
# beginnt und sich in der Datei $HOME/.profile befinden, ein # zu setzen
# ==============================
# ======= Deinstallation =======
# Um NEO wieder zu deinstallieren, kann das Skript ›installiere_neo‹ ein weiteres Mal aufgerufen werden
# ==============================
# ======= Bemerkungen ==========
# Dieses Skript ist eine rudimentäre Installation. Derzeit gibt es keine Konfigurationsmöglichkeit.
# Es wird immer das Standardverzeichnis $HOME/neo 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
B="\033[30m"
R="\033[31m"
G="\033[32m"
datei() { # cut files from the complete file ›installiere_neo‹
grep -A10000 "#neo: $1 --- Beginn" installation | grep -B10000 "#neo: $1 --- Ende" | grep -v "#neo:"
}
erzeuge() { # create directories, files and entries
case $1 in
d) # directory
if [ -d $2 ] # if already exists
then
echo -e "Das Verzeichnis ${R}$2${B} gibt es bereits – wird verwendet…"
else
echo -e "Erstelle $2"
mkdir $2 # create
fi
;;
f) # file
if [ -f $3 ] # if already exists
then
echo -e "Die Datei ${R}$3${B} gibt es bereits – soll die bestehende Datei überschrieben werden? \c"; read -p "[J,N] " -e overwrite
if [ "$overwrite" = "J" ] # overwrite?
then
echo "Datei $3 wird überschrieben!"
rm -f $3 # remove if user wants to overwrite
else
echo -e "Datei ${R}$3${B} gibt es schon → Installation abgebrochen"
exit
fi
fi
echo "Erstelle Datei $3" # create
datei $2 > $3
;;
l) # soft link
if [ -d $HOME/bin/ ] # $HOME/bin has to exist!
then
echo "Verzeichnis $HOME/bin/ gefunden"
else
echo -e "Verzeichnis ${R}$HOME/bin${B} wird erwartet, ist aber nicht vorhanden"
echo "Außerdem wird erwartet, dass /$HOME/bin in der Umgebungsvariable \$PATH ist"
echo "Istallation wird abgebrochen."
exit
fi
if [ -f $HOME/bin/$2 ] # if already exists
then
echo -e "Datei ${R}$HOME/bin/$2${B} 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 $HOME/bin/$2 # remove if user wants to overwrite
else
echo -e "Datei ${R}$2${B} gibt es schon → Installation abgebrochen"
exit
fi
fi
echo "Erstelle Link $HOME/bin/$2"
ln -s $HOME/neo/$2 $HOME/bin # create
;;
esac
}
entferne(){ # remove files for uninstall option
echo "Entferne $1"
rm $1 || echo -e "${R}Konnte die Datei $1 nicht entfernen!${B}"
}
deinstall() { #remove all directories, files and entries made by ›installiere_neo‹
echo
echo
rmfromprofile
entferne $HOME/.neorc
entferne $HOME/bin/uiae
entferne $HOME/neo/uiae
entferne $HOME/bin/asdf
entferne $HOME/neo/asdf
entferne $HOME/neo/neo.map
entferne $HOME/neo/neo_de.xmodmap
echo "Entferne $HOME/neo/"
rmdir $HOME/neo/ || echo -e "${R}Konnte das Verzeichenis $HOME/neo/ nicht entfernen!${B}"
}
rmfromprofile() { # remove the entry in $HOME/.profile
grep -v "^\# NEO:$" $HOME/.profile | grep -v "asdf \# mit" > $HOME/profile.neo.tmp
rm /$HOME/.profile
mv $HOME/profile.neo.tmp $HOME/.profile
}
# *** main program ***
clear
echo
echo " *** NEO – Ergonomie und Zeichenvielfalt ***"
echo
echo
echo " Ihr System wird untersucht…"
echo
# check for an existing neo configuration
if [ -f "${NEO_CONFIG}" ]; then
. "${NEO_CONFIG}" || die "Failed to source ${NEO_CONFIG}"
elif [ -f "${HOME}"/.neorc ]; then
. "${HOME}"/.neorc || die "Failed to source ${HOME}/.neorc"
elif [ -f /etc/neo.conf ]; then
. /etc/neo.conf || die "Failed to source /etc/neo.conf"
else
# no configuration file found → install NEO
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 ${G}installiere_neo${B} 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 ${G}installiere_neo${B} ein weiteres Mal ausgeführt werden."
echo
read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
;;
1)
echo
echo "Das Standardlayout wird nich verändert."
echo -e "Zu NEO kann man jederzeit mit der Abrollbewegung ${G}asdf${B} wechseln."
echo
read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
;;
*)
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
echo " Installation von NEO mit xmodmap wird gestartet…"
echo
echo
# *** main installation process ***
# creating a directory $HOME/neo with NEO files
# linking ›asdf‹ and ›uiae‹ scripts to $HOME/bin
erzeuge d $HOME/neo
erzeuge f xmodmap $HOME/neo/neo_de.xmodmap
erzeuge f console $HOME/neo/neo.map
erzeuge f asdf $HOME/neo/asdf
chmod u+x $HOME/neo/asdf
erzeuge l asdf
erzeuge f uiae $HOME/neo/uiae
chmod u+x $HOME/neo/uiae
erzeuge l uiae
erzeuge f 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 ${G}installiere_neo${B} ein weiteres Mal ausgeführt werden."
rmfromprofile
datei profile.neo > $HOME/neo/neo.profile
cat $HOME/neo/neo.profile >> $HOME/.profile
rm $HOME/neo/neo.profile
;;
1)
echo
echo "Das Standardlayout wird nich verändert."
echo -e "Zu NEO kann man jederzeit mit der Abrollbewegung ${G}asdf${B} wechseln."
rmfromprofile
datei profile.qwertz > $HOME/neo/neo.profile
cat $HOME/neo/neo.profile >> $HOME/.profile
rm $HOME/neo/neo.profile
;;
esac
# starting NEO layout
echo
echo "Die Belegung wird nun auf NEO geändert…"
cd $HOME/neo
./asdf xmodmap
echo -e "Um zu QWERTZ zurückzukehren, genügt es, die Abrollbewegung ${G}uiae${B} einzugeben."
exit
fi
# configuration file found → delete/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 ${G}adsf${B}."
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 " Diese Optionen funktionieren nur dann zuverlässig, wenn NEO auch mit ${G}installiere_neo${B} 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 ${G}installiere_neo${B} vorgenommen Änderungen am System werden gelöscht!"
echo
read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
deinstall # full deinstallation
;;
1)
echo
echo "NEO wird als Standardbelegung entfernt"
echo -e "Zu NEO kann man weiterhin jederzeit mit der Abrollbewegung ${G}asdf${B} wechseln."
echo
read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen"
echo
rmfromprofile # alter the entry in $HOME/.profile; first: remove old entry
echo >> $HOME/.profile # write the new entry
echo "# NEO:" >> $HOME/.profile
echo "# asdf # mit einem # am Zeilenanfang bleibt QWERTZ das Standardlayout, sonst ist es NEO" >> $HOME/.profile
;;
*)
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
exit
|