Gnome Terminal ermöglicht verschiedene Profile. Ist es möglich, den Profilnamen, unter dem das Terminal gestartet wurde, über die Befehlszeile abzurufen?
Antwort1
Dies scheint nicht möglich zu sein, Sie können jedoch den Standardtitel des Terminals herausfinden. Sie müssen also zur Unterscheidung zwischen Registerkarten oder Profilen lediglich unterschiedliche Standardtitel konfigurieren.
Die Steuersequenz ESC [ 2 1 t
fordert das Terminal auf, seinen Titel in den Terminal-Eingabestream einzufügen. (SieheXterm-Steuersequenzenfür weitere Informationen zu Escape-Sequenzen für xterm und ähnliche Programme). Insbesondere antwortet das Terminal (sofern es diese Funktion unterstützt; gnome-terminal tut dies) mit ESC ] l title ESC \
.
Hier ist eine Bash-Funktion, die die Variable, deren Name als erstes Argument an den Xterm-Titel übergeben wird, sofern verfügbar, einstellt. Wenn das Terminal die Funktion nicht unterstützt, läuft sie nach einer Sekunde ab und gibt einen Fehlercode ungleich Null zurück.
read_xterm_title () {
# Clear IFS so that read doesn't do any word splitting.
local IFS= read_xterm_title_header=
# $1 is expected to be a parameter name. Do a crude format check.
if [[ $1 = '' || $1 = *[!0-9_A-Za-z]* ]]; then return 120; fi
eval $1=
# Expect "ESC ] l title ESC \\"
read -p $'\e[21t' -s -t 1 -r -n 3 read_xterm_title_header &&
[[ $read_xterm_title_header = $'\e]l' ]] &&
read -p '' -s -t 1 -r -d $'\e' $1 &&
read -s -t 1 -r -n 1
}
read_xterm_title title
case $title in ...
Antwort2
Früher konnten Sie dies mit gconftool2
und dann mit tun dconf
und jetzt müssen Sie mit tun, gsettings
aber es handelt sich um eine GUID, also könnte so etwas wie das Folgende das Richtige für Sie sein:
gsettings get org.gnome.Terminal.ProfilesList default | tr -d \'
und im Kontext des Festlegens einer Variablen:
gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$(gsettings get org.gnome.Terminal.ProfilesList default | tr -d \')/ cursor-blink-mode off
prohttps://wiki.archlinux.org/index.php/GNOME/Tips_and_tricks
Antwort3
Das hier scheint zu funktionieren:
gsettings get org.gnome.Terminal.Legacy.Profile:$dconfdir/":"$1/ visible-name
Gestohlen vonHier.
Antwort4
Das beantwortet die Frage nicht genau. Aber wenn Sie Profile unterscheiden möchten, können Sie beispielsweise versuchen, eine Hintergrundfarbe zu überprüfen.
[[ "$(xtermcontrol --get-bg)" == "rgb:3b3b/3c3c/3e3e" ]] && echo profile-1 || echo profile-2
Es gibt die Hintergrundfarbe des aktuellen Profils zurück; allerdings nicht notwendigerweise die, mit der begonnen wurde, da Sie ein Profil im Handumdrehen ändern können.