Greifen Sie über die Befehlszeile auf den Namen des Gnome-Terminalprofils zu

Greifen Sie über die Befehlszeile auf den Namen des Gnome-Terminalprofils zu

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 tfordert 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 gconftool2und dann mit tun dconfund jetzt müssen Sie mit tun, gsettingsaber 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.

verwandte Informationen