| 1 | #!/bin/bash |
|---|
| 2 | # Copyright 2008 Pascal Hauck <pascal.hauck@web.de> |
|---|
| 3 | |
|---|
| 4 | # NEO-Tastaturbelegung |
|---|
| 5 | |
|---|
| 6 | # ======= Installation ======= |
|---|
| 7 | # Um NEO auf Ihrem System zu (dauerhaft oder testweise) zu installieren, genügt es, dieses Skript auszuführen |
|---|
| 8 | # z.B. in der Konsole die folgenden beiden Zeilen eingeben: |
|---|
| 9 | # chmod u+x installiere_neo |
|---|
| 10 | # ./installiere_neo |
|---|
| 11 | # Für die restliche Installation weden mehrere Optionen angeboten. |
|---|
| 12 | # Nach der Installation und Eingabe von ›. starte_neo‹ oder nach dem nächsten Login ist: |
|---|
| 13 | # • ein Wechsel von NEO zu QWERTZ ist jederzeit mit ›uiae‹ leicht möglich und |
|---|
| 14 | # • ein Wechsel von QWERTZ zu NEO ist jederzeit mit ›asdf‹ ebenso leicht möglich |
|---|
| 15 | |
|---|
| 16 | # Wenn NEO nicht automatisch nach dem Login gestartet werden soll, genügt es, vor die Zeile |
|---|
| 17 | # asdf # mit einem # am Zeilenanfang bleibt QWERTZ das Standardlayout, sonst ist es NEO |
|---|
| 18 | # in der Datei $HOME/.profile ein # zu setzen |
|---|
| 19 | # Alternativ kann das Skript ›installiere_neo‹ ein weiteres mal aufgerufen werden |
|---|
| 20 | # ============================== |
|---|
| 21 | |
|---|
| 22 | |
|---|
| 23 | # ======= Deinstallation ======= |
|---|
| 24 | # Um NEO wieder zu deinstallieren, kann das Skript ›installiere_neo‹ ein weiteres Mal aufgerufen werden |
|---|
| 25 | # ============================== |
|---|
| 26 | |
|---|
| 27 | |
|---|
| 28 | # ========= Inhalte ============ |
|---|
| 29 | # Das Ausführen dieses Skripts erzeugt auf einfache Weise eine vollständige und saubere Installation für einen Benutzer eines Linuxsystems |
|---|
| 30 | # Die beinhalteten Komponenten sind: |
|---|
| 31 | # • Xmodmap-Tastaturbelegung |
|---|
| 32 | # • Textkonsolenbelegung |
|---|
| 33 | # • Compose-Erweiterung von NEO |
|---|
| 34 | # • die Skripte ›asdf‹, ›uiae‹, um die Belegung zwischen NEO und QWERTZ zu wechseln |
|---|
| 35 | # • die Skripte ›num‹ und ›neo‹, um ein Bild der Tastatur zu erzeugen |
|---|
| 36 | # • die Referenz |
|---|
| 37 | # • die Konfigurationsdatei neorc.conf |
|---|
| 38 | # ============================== |
|---|
| 39 | |
|---|
| 40 | # ======= Bemerkungen ========== |
|---|
| 41 | # Es wird immer das Standardverzeichnis $inst_dir verwendet |
|---|
| 42 | # Es gibt keine graphische Installation |
|---|
| 43 | # Dennoch kann dieses Skrip helfen, NEO auf eine einfache Weise zu installieren. |
|---|
| 44 | # Dieses Skript wird mit der Zeit verbessert werden. |
|---|
| 45 | # ============================== |
|---|
| 46 | |
|---|
| 47 | |
|---|
| 48 | # colours in the Bash |
|---|
| 49 | normal="\033[0m" |
|---|
| 50 | red="\033[31m" |
|---|
| 51 | green="\033[32m" |
|---|
| 52 | |
|---|
| 53 | inst_dir=$HOME/neo |
|---|
| 54 | |
|---|
| 55 | # remove the entry in $HOME/.profile |
|---|
| 56 | rmfromprofile() |
|---|
| 57 | { |
|---|
| 58 | grep -v "^\# NEO:$" $HOME/.profile | grep -v "asdf \# mit" | grep -v "asdf" > $HOME/profile.neo.tmp |
|---|
| 59 | rm /$HOME/.profile |
|---|
| 60 | mv $HOME/profile.neo.tmp $HOME/.profile |
|---|
| 61 | } |
|---|
| 62 | |
|---|
| 63 | # create directories, files and entries |
|---|
| 64 | create() |
|---|
| 65 | { |
|---|
| 66 | if [ -f $2 ] # if already exists |
|---|
| 67 | then |
|---|
| 68 | echo -e "Die Datei ${red}$2${normal} gibt es bereits – soll die bestehende Datei überschrieben werden? \c"; read -p "[J,N] " -e overwrite |
|---|
| 69 | if [ "$overwrite" = "J" ] # overwrite? |
|---|
| 70 | then |
|---|
| 71 | echo "Datei $2 wird überschrieben!" |
|---|
| 72 | rm -f $2 # remove if user wants to overwrite |
|---|
| 73 | else |
|---|
| 74 | echo -e "Datei ${red}$2${normal} gibt es schon → Installation abgebrochen" |
|---|
| 75 | exit |
|---|
| 76 | fi |
|---|
| 77 | fi |
|---|
| 78 | echo "Erstelle Datei $2" # create |
|---|
| 79 | $1 > $2 # call subroutine $1 and write to file $2 |
|---|
| 80 | } |
|---|
| 81 | |
|---|
| 82 | ## show options if NEO is not installed so far |
|---|
| 83 | install_options() |
|---|
| 84 | { |
|---|
| 85 | echo "Bislang gibt es kein vollständig konfiguriertes NEO auf Ihrem System" |
|---|
| 86 | echo |
|---|
| 87 | echo "Sie haben folgende Möglichkeiten:" |
|---|
| 88 | echo |
|---|
| 89 | echo " [1] NEO nur testen" |
|---|
| 90 | echo " Sie haben die Möglichkeit, NEO zu Testen, ihre Standardbelegung (in der Regel QWERTZ) bleibt erhalten" |
|---|
| 91 | echo |
|---|
| 92 | echo |
|---|
| 93 | echo " [2] NEO als Standardbelegung" |
|---|
| 94 | echo " Mit dieser Option wird NEO die neue Standardbelegung für diesen Benutzer und nach (nicht vor!) dem" |
|---|
| 95 | echo " Login automatisch aktiviert" |
|---|
| 96 | echo |
|---|
| 97 | echo |
|---|
| 98 | echo -e " Wenn ${green}installiere_neo${normal} ein weiteres Mal aufgerufen wird, haben weitere Optionen – z.B. die Deinstallation von NEO" |
|---|
| 99 | echo |
|---|
| 100 | |
|---|
| 101 | installoption="" |
|---|
| 102 | while [ ! $installoption ] # choose between QWERTZ or NEO as standard |
|---|
| 103 | do # switch with ›asdf‹ and ›uiae‹ |
|---|
| 104 | echo |
|---|
| 105 | read -p "Wählen Sie eine Option [1,2]: " -e installoption |
|---|
| 106 | case $installoption in |
|---|
| 107 | 2) |
|---|
| 108 | echo |
|---|
| 109 | echo "Nach dem Login wird NEO die Standardbelegung sein." |
|---|
| 110 | echo -e "Um dies zu ändern, kann ${green}installiere_neo${normal} ein weiteres Mal ausgeführt werden." |
|---|
| 111 | echo -e ${red} |
|---|
| 112 | read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen" |
|---|
| 113 | echo -e ${normal} |
|---|
| 114 | ;; |
|---|
| 115 | 1) |
|---|
| 116 | echo |
|---|
| 117 | echo "Das Standardlayout wird nicht verändert." |
|---|
| 118 | echo -e "Zu NEO kann man jederzeit mit der Abrollbewegung ${green}asdf${normal} wechseln." |
|---|
| 119 | echo -e ${red} |
|---|
| 120 | read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen" |
|---|
| 121 | echo -e ${normal} |
|---|
| 122 | ;; |
|---|
| 123 | *) |
|---|
| 124 | echo |
|---|
| 125 | echo "Bitte wählen Sie die Optionen 1, um NEO zu testen oder 2, um NEO zur Standardbelegung zu machen" |
|---|
| 126 | installoption="" |
|---|
| 127 | ;; |
|---|
| 128 | esac |
|---|
| 129 | done |
|---|
| 130 | |
|---|
| 131 | |
|---|
| 132 | echo |
|---|
| 133 | echo "Installation von NEO mit xmodmap wird gestartet…" |
|---|
| 134 | echo |
|---|
| 135 | echo |
|---|
| 136 | |
|---|
| 137 | # *** main installation process *** |
|---|
| 138 | # creating a directory $inst_dir |
|---|
| 139 | if [ -d $inst_dir ] |
|---|
| 140 | then |
|---|
| 141 | echo -e "Das Verzeichnis ${red}$inst_dir${normal} gibt es bereits – wird verwendet…" |
|---|
| 142 | else |
|---|
| 143 | echo -e "Erstelle $inst_dir" |
|---|
| 144 | mkdir $inst_dir |
|---|
| 145 | fi |
|---|
| 146 | |
|---|
| 147 | # creating NEO files in $inst_dir |
|---|
| 148 | create neo_xmodmap $inst_dir/neo_de.xmodmap |
|---|
| 149 | create neo_console $inst_dir/neo.map |
|---|
| 150 | create neo_asdf $inst_dir/asdf |
|---|
| 151 | chmod u+x $inst_dir/asdf |
|---|
| 152 | create neo_uiae $inst_dir/uiae |
|---|
| 153 | chmod u+x $inst_dir/uiae |
|---|
| 154 | create neo_referenz $inst_dir/neo20.txt |
|---|
| 155 | create neo_neo $inst_dir/neo |
|---|
| 156 | chmod u+x $inst_dir/neo |
|---|
| 157 | create neo_num $inst_dir/num |
|---|
| 158 | chmod u+x $inst_dir/num |
|---|
| 159 | |
|---|
| 160 | echo "Ergängze die Compose-Erweiterung von NEO…" |
|---|
| 161 | create neo_compose $inst_dir/Compose.neo |
|---|
| 162 | if [ -f $HOME/.XCompose ] |
|---|
| 163 | then |
|---|
| 164 | echo -e "Die Datei ${red}$HOME/.XCompose${normal} gibt es bereits – soll die bestehende Datei überschrieben werden? \c"; read -p "[J,N] " -e overwrite |
|---|
| 165 | if [ "$overwrite" = "J" ] # overwrite? |
|---|
| 166 | then |
|---|
| 167 | echo "Datei $HOME/.XCompose wird überschrieben!" |
|---|
| 168 | cat /usr/share/X11/locale/en_US.UTF-8/Compose $inst_dir/Compose.neo > $HOME/.XCompose |
|---|
| 169 | else |
|---|
| 170 | echo -e "Datei ${red}$HOME/.XCompose${normal} bleibt erhalten, jedoch kann die Compos-Erweiterung von NEO nicht genutzt werden." |
|---|
| 171 | fi |
|---|
| 172 | fi |
|---|
| 173 | |
|---|
| 174 | create neorc $HOME/.neorc |
|---|
| 175 | |
|---|
| 176 | # entry in $HOME/.profile with NEO or QWERTZ as standard keyboard layout after login |
|---|
| 177 | case $installoption in |
|---|
| 178 | 2) |
|---|
| 179 | echo |
|---|
| 180 | echo "Nach dem Login wird NEO die Standardbelegung sein." |
|---|
| 181 | echo -e "Um dies zu ändern, kann ${green}installiere_neo${normal} ein weiteres Mal ausgeführt werden." |
|---|
| 182 | rmfromprofile |
|---|
| 183 | profile_neo >> $HOME/.profile |
|---|
| 184 | ;; |
|---|
| 185 | 1) |
|---|
| 186 | echo |
|---|
| 187 | echo "Das Standardlayout wird nich verändert." |
|---|
| 188 | rmfromprofile |
|---|
| 189 | profile_qwertz >> $HOME/.profile |
|---|
| 190 | ;; |
|---|
| 191 | esac |
|---|
| 192 | } |
|---|
| 193 | |
|---|
| 194 | # remove files for uninstall option |
|---|
| 195 | remove() |
|---|
| 196 | { |
|---|
| 197 | echo "Entferne $1" |
|---|
| 198 | rm $1 || echo -e "${red}Konnte die Datei $1 nicht entfernen!${normal}" |
|---|
| 199 | } |
|---|
| 200 | |
|---|
| 201 | # remove all directories, files and entries made by ›installiere_neo‹ |
|---|
| 202 | deinstall() |
|---|
| 203 | { |
|---|
| 204 | echo |
|---|
| 205 | echo |
|---|
| 206 | rmfromprofile |
|---|
| 207 | remove $HOME/.neorc |
|---|
| 208 | remove $inst_dir/starte_neo |
|---|
| 209 | remove $inst_dir/Compose.neo |
|---|
| 210 | remove $inst_dir/neo20.txt |
|---|
| 211 | remove $inst_dir/num |
|---|
| 212 | remove $inst_dir/neo |
|---|
| 213 | remove $inst_dir/uiae |
|---|
| 214 | remove $inst_dir/asdf |
|---|
| 215 | remove $inst_dir/neo.map |
|---|
| 216 | remove $inst_dir/neo_de.xmodmap |
|---|
| 217 | echo "Entferne $inst_dir/" |
|---|
| 218 | rmdir $inst_dir/ || echo -e "${red}Konnte das Verzeichenis $inst_dir/ nicht entfernen!${normal}" |
|---|
| 219 | } |
|---|
| 220 | |
|---|
| 221 | # show options if NEO is already installed |
|---|
| 222 | deinstall_options() |
|---|
| 223 | { |
|---|
| 224 | echo "Es gibt auf Ihrem System bereits eine Konfiguration für NEO." |
|---|
| 225 | echo |
|---|
| 226 | echo "Sollte NEO nur für diesen Benutzer installiert sein, haben folgende Möglichkeiten:" |
|---|
| 227 | echo |
|---|
| 228 | echo " [1] NEO zukünftig nicht mehr als Standardbelegung" |
|---|
| 229 | echo -e " NEO wird nicht länger direkt nach dem Login zur Verfügung stehen, wohl aber nach Eingabe von ${green}adsf${normal}." |
|---|
| 230 | echo |
|---|
| 231 | echo |
|---|
| 232 | echo " [2] NEO vollständig vom System entfernen" |
|---|
| 233 | echo " Dieso Option entfernt alle zuvor angelegten Verzeichnisse, Datein und Einträge zur NEO-Belegung" |
|---|
| 234 | echo |
|---|
| 235 | echo |
|---|
| 236 | echo -e " Diese Optionen funktionieren nur dann zuverlässig, wenn NEO auch mit ${green}installiere_neo${normal} installiert wurde" |
|---|
| 237 | echo |
|---|
| 238 | |
|---|
| 239 | deinstalloption="" |
|---|
| 240 | while [ ! $deinstalloption ] # choose between deleting NEO as standard layout or delete NEO at all |
|---|
| 241 | do # if deleted as standard layout only, ›asdf‹ is still working |
|---|
| 242 | echo |
|---|
| 243 | read -p "Wählen Sie eine Option [1,2]: " -e deinstalloption |
|---|
| 244 | case $deinstalloption in |
|---|
| 245 | 2) |
|---|
| 246 | echo |
|---|
| 247 | echo -e "Alle zuvor von ${green}installiere_neo${normal} vorgenommen Änderungen am System werden gelöscht!" |
|---|
| 248 | echo -e ${red} |
|---|
| 249 | read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen" |
|---|
| 250 | echo -e ${normal} |
|---|
| 251 | cd $inst_dir |
|---|
| 252 | ./uiae |
|---|
| 253 | deinstall # full deinstallation |
|---|
| 254 | echo |
|---|
| 255 | echo -e "Alle von ${green}installiere_neo${normal} gemachten Änderungen an Ihrem System wurden entfernt." |
|---|
| 256 | ;; |
|---|
| 257 | 1) |
|---|
| 258 | echo |
|---|
| 259 | echo "NEO wird als Standardbelegung entfernt" |
|---|
| 260 | echo -e "Zu NEO kann man weiterhin jederzeit mit der Abrollbewegung ${green}asdf${normal} wechseln." |
|---|
| 261 | echo -e ${red} |
|---|
| 262 | read -n1 -p "Drücke eine Taste um fortzufahren oder STRG+C zum Abbrechen" |
|---|
| 263 | echo -e ${normal} |
|---|
| 264 | echo |
|---|
| 265 | rmfromprofile # alter the entry in $HOME/.profile; first: remove old entry |
|---|
| 266 | profile_qwertz >> $HOME/.profile # write the new entry |
|---|
| 267 | echo |
|---|
| 268 | echo "Nach dem nächsten Login wird NEO nicht mehr die Standardbelegung sein. " |
|---|
| 269 | ;; |
|---|
| 270 | *) |
|---|
| 271 | echo |
|---|
| 272 | echo "Bitte wählen Sie die Optionen 1, um NEO nicht länger als Standardbelegung zu nutzen" |
|---|
| 273 | echo " oder 2, um NEO vollständig zu entfernen" |
|---|
| 274 | deinstalloption="" |
|---|
| 275 | ;; |
|---|
| 276 | esac |
|---|
| 277 | done |
|---|
| 278 | } |
|---|