コマンドラインからgnomeターミナルプロファイルの名前にアクセスする

コマンドラインからgnomeターミナルプロファイルの名前にアクセスする

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

あたり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

現在のプロファイルの背景色を返します。ただし、プロファイルは即座に変更できるため、必ずしも開始時の色と同じであるとは限りません。

関連情報