forked from neo/neo-layout
295 lines
10 KiB
Bash
295 lines
10 KiB
Bash
#!/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
|
||
}
|