#!/bin/bash # Copyright 2008 Pascal Hauck # 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