Gnome ターミナルでは、さまざまなプロファイルを使用できます。コマンド ラインから、そのターミナルが起動されたプロファイル名を取得することは可能ですか?
答え1
これは不可能と思われますが、デフォルトのターミナルタイトルを見つけることはできるので、タブやプロファイルを区別するために必要なことは、異なるデフォルトのタイトルを構成することだけです。
制御シーケンスは、ESC [ 2 1 t
端末にタイトルを端末入力ストリームに挿入するように要求します。(Xterm 制御シーケンスxterm や同様のプログラムのエスケープ シーケンスの詳細については、 を参照してください。具体的には、ターミナル (この機能をサポートしている場合。gnome-terminal はサポートしています) は で応答しますESC ] l title ESC \
。
これは、xterm タイトルの最初の引数として渡される名前を持つ変数を設定する bash 関数です (使用可能な場合)。端末が機能をサポートしていない場合は 1 秒後にタイムアウトし、ゼロ以外のエラー コードを返します。
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
答え3
答え4
質問に正確に答えているわけではありませんが、プロファイルを区別したい場合は、たとえば背景色をチェックしてみてください。
[[ "$(xtermcontrol --get-bg)" == "rgb:3b3b/3c3c/3e3e" ]] && echo profile-1 || echo profile-2
現在のプロファイルの背景色を返します。ただし、プロファイルは即座に変更できるため、必ずしも開始時の色と同じであるとは限りません。