neo-layout/linux/bin/installiere_neo/installiere_neo.1

295 lines
10 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env 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 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()
{
touch /$HOME/.profile
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
}