Neben den üblichen Verdächtigen hab ich noch:
…
alias sudo="sudo " # wegen folgendem:
alias bb="bauerbill"
…
Außerdem nicht direkt ein Alias, aber ein Anwendungsstarter für Konsolenanwendungen über dmenu:
$ cat ~/.bin/$USER-bin.conf
#!/bin/bash
# Terminal to open
terminal="urxvtc -name $appname -e"
# $TERM should be this if X is running
term_variable="rxvt-unicode"
# $TERM should be this if X is not running
console_variable="linux"
# Prefix used for all apps
prefix="/usr/bin"
# Parameters for dtach
dtach_parameters="-z"
# Sessions folder for dtach sessions
sessions="/home/runiq/.local/share/dtach/sessions"
# Should apps by default be detachable? Only "yes" or any other answer.
# Can be changed by app in the corresponding file.
dtachable="no"
#################
### FUNCTIONS ###
#################
function start_directly {
if [ $dtachable == "yes" ]; then
exec dtach -A $sessions/$appname.session $dtach_parameters $prefix/$appname $@
else
exec $prefix/$appname $@
fi
}
function start_indirectly {
if [ $dtachable == "yes" ]; then
exec $terminal dtach -A ${sessions}/$appname.session $dtach_parameters $prefix/$appname $@
else
exec $terminal $prefix/$appname $@
fi
}
function start_routine {
if [ $TERM == "$term_variable" ]; then
start_directly
elif [ $TERM == "$console_variable" ]; then
if [ $DISPLAY == ':0' ]; then
start_indirectly
else
start_directly
fi
fi
}
Die Anwendungen, die ich damit starten will, müssen folgendes Format haben:
$ cat ~/.bin/abook
#!/bin/bash
# TODO: Somehow put this into starting_routine
# TODO: Rewrite using `basename`
appname="${0#/home/runiq/.bin/}"
source $HOME/.bin/$USER-bin.conf
# You only need this if you want to override the default setting
dtachable="yes"
start_routine
Damit kann ich dann Folgendes machen:
• Konsolenprogramme über dmenu in einem neuen Terminal starten
• Automatisches dtach für die Apps, die ich will
• Wenn die Programme in einem schon existierenden Terminal oder auf der Konsole gestartet werden, dann wird kein neues Terminal geöffnet
Voraussetzungen & Beschränkungen:
• dtach und bash müssen installiert sein.
• ~/.bin muss in $PATH sein.
• Funktioniert in dieser Form nur für Programme, die in $prefix zu finden sind. (Werde das vielleicht für $PATH anpassen.)
• Matching funktioniert nicht mit WM_CLASS, sondern nur über den Fenstertitel (z.B. für dwm, XMonad, etc.)
Die TODOs hab ich einfach dringelassen; wer weiß, wie ich das hinbekommen kann, möge mir bitte aushelfen. 🙂 Davon abgesehen gibt es sicherlich einige Stolpersteine; das Skript ist nur das Ergebnis eines Nachmittags und ich bin nach eigener Einschätzung immer noch blutiger Anfänger.