#!/bin/bash # Copyright 2008 Pascal Hauck # 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 werden mehrere Optionen angeboten. # Nach der Installation und Eingabe von ›. starte_neo‹ oder nach dem nächsten Login ist: # • ein Wechsel von Neo zu QWERTZ jederzeit mit ›uiae‹ leicht möglich und # • ein Wechsel von QWERTZ zu Neo 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. # ============================== inst_dir=$HOME/neo # colours in the Bash normal="\033[0m" red="\033[31m" orange="\033[33m" green="\033[32m" # remove the entry in $HOME/.profile rmfromprofile() { grep -v "\# Neo Tastaturbelegung" $HOME/.profile > $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 Sie 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ücken Sie 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ücken Sie 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_alternative $inst_dir/neo_de_alternative.xmodmap create neo_xprog $inst_dir/neo_de_x-prog.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änze die Compose-Erweiterung von Neo…" create neo_compose $inst_dir/XCompose 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/XCompose > $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/XCompose > $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 nicht 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/XCompose 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_alternative.xmodmap remove $inst_dir/neo_de_x-prog.xmodmap 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 Sie 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ücken Sie 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ücken Sie 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 }