web-dev-qa-db-ja.com

背景色に基づいてPS1の色を変更しますか?

PS1のフォーマット、特に文字列の色を変更できることを学びました。それでは、シェルの背景色に基づいて色を変更することはできますか?または、シェルの背景色を検出するにはどうすればよいですか?

12
prosseek

私の知る限り、ターミナルエミュレータの色を照会する方法はありません。 \e]4;NUMBER;#RRGGBB\aNUMBERは端末の色番号(明るい色の場合は0〜7、明るい色の場合は8〜15))で変更でき、#RRGGBBは16進数のRGB色値です。 )端末がそのシーケンスをサポートしている場合(参照: ctlseqs )。

強力な配色メカニズムには、多くの場合、背景が黒または濃い灰色であるか、白または明るい灰色であるかを示すために指定する必要がある暗いまたは明るい背景設定があります。

自分で構成する場合は、通常、常に同じ背景色を使用することを決定するだけで十分です。

Gnome-terminalを使用している場合は、任意のプロファイルの背景色を取得できます。この場合、デフォルトプロファイルの場合は次のようになります。

   $ gconftool-2 --get /apps/gnome-terminal/profiles/Default/background_color
   #E12FE12FC74D

次に、それに応じてプロンプトを設定する方法を決定できます。

4

Xtermを使用すると、\e]11;?\aエスケープシーケンスを使用して背景色を照会できます。ターミナルからの応答を読み取る必要があります。それを行うxtermcontrolコマンドがあります。

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0
2