Доступ к имени профиля терминала gnome из командной строки

Доступ к имени профиля терминала gnome из командной строки

Gnome Terminal позволяет иметь разные профили. Можно ли получить имя профиля, под которым был запущен этот терминал, из командной строки?

решение1

Это, по-видимому, невозможно, однако вы можете узнать заголовок терминала по умолчанию, поэтому все, что вам нужно сделать, чтобы различать вкладки или профили, — это настроить разные заголовки по умолчанию.

Управляющая последовательность ESC [ 2 1 tпросит терминал вставить свой заголовок в поток ввода терминала. (См.Xterm контрольные последовательностидля получения дополнительной информации об управляющих последовательностях для xterm и подобных программ). В частности, терминал (если он поддерживает эту функцию; gnome-terminal поддерживает) отвечает ESC ] l title ESC \.

Вот функция bash, которая устанавливает переменную, имя которой передается в качестве первого аргумента в заголовок xterm, если он доступен. Она отключается через одну секунду, если терминал не поддерживает эту функцию, и возвращает ненулевой код ошибки.

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 ...

решение2

Раньше вы могли делать это с помощью gconftool2, затем с dconf, а теперь вам придется делать с , gsettingsно это GUID, поэтому что-то вроде этого может быть тем, что вам нужно:

gsettings get org.gnome.Terminal.ProfilesList default | tr -d \'

и в контексте установки переменной:

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

заhttps://wiki.archlinux.org/index.php/GNOME/Советы_и_трюки

решение3

Кажется, это срабатывает:

gsettings get org.gnome.Terminal.Legacy.Profile:$dconfdir/":"$1/ visible-name

Украдено изздесь.

решение4

Это не совсем ответ на вопрос. Но если вы хотите различать профили, вы можете попробовать проверить, например, цвет фона.

[[ "$(xtermcontrol --get-bg)" == "rgb:3b3b/3c3c/3e3e" ]] && echo profile-1 || echo profile-2

Он возвращает цвет фона текущего профиля; однако, это не обязательно тот, с которого он был запущен, поскольку профиль можно изменить «на лету».

Связанный контент