O Terminal Gnome permite ter diferentes perfis. É possível obter o nome do perfil sob o qual o terminal foi iniciado na linha de comando?
Responder1
Isso não parece ser possível, mas você pode descobrir o título padrão do terminal, então tudo que você precisa fazer para distinguir entre guias ou perfis é configurar diferentes títulos padrão.
A sequência de controle ESC [ 2 1 t
pede ao terminal para inserir seu título no fluxo de entrada do terminal. (VerSequências de controle Xtermpara obter mais informações sobre sequências de escape para xterm e programas similares). Especificamente, o terminal (se suportar esse recurso; o gnome-terminal suporta) responde com ESC ] l title ESC \
.
Aqui está uma função bash que define a variável cujo nome é passado como o primeiro argumento para o título do xterm, se disponível. O tempo limite após um segundo se o terminal não suportar o recurso e retornará um código de erro diferente de zero.
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 ...
Responder2
Você costumava fazer isso com gconftool2
e depois com dconf
e agora tem que fazer isso, gsettings
mas é um GUID, então algo assim pode ser o que você deseja:
gsettings get org.gnome.Terminal.ProfilesList default | tr -d \'
e no contexto da definição de uma variável:
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
porhttps://wiki.archlinux.org/index.php/GNOME/Tips_and_tricks
Responder3
Isso parece funcionar:
gsettings get org.gnome.Terminal.Legacy.Profile:$dconfdir/":"$1/ visible-name
Roubado deaqui.
Responder4
Não responde exatamente à pergunta. Mas se quiser distinguir perfis, você pode tentar verificar a cor de fundo, por exemplo.
[[ "$(xtermcontrol --get-bg)" == "rgb:3b3b/3c3c/3e3e" ]] && echo profile-1 || echo profile-2
Retorna uma cor de fundo do perfil atual; no entanto, não necessariamente aquele com o qual foi iniciado, porque você pode alterar um perfil rapidamente.