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


12

PS1の形式、特に文字列の色を変更できることを学びました。次に、シェルの背景色に基づいて色を変更することは可能ですか?または、シェルの背景色をどのように検出できますか?

回答:


4

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

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

自分で設定する場合、通常は常に同じ背景色を使用することを決定すれば十分です。


termcapエントリでサポートされている色の数を取得するには、「tput colors」を調べますが、多くの場合、256色の端末に対するtermcapサポートは非​​常に弱いため、8などの低い数になります。
怠acyな

1
@slacy今日の端末の99%を超える場合、termcap / terminfoデータは無関係です。これらはすべてxtermのわずかなバリエーションであり、色の数などの異なる詳細は値に反映されTERMないため、環境から取得。
ジル「SO-悪であるのをやめる」

4

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

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

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


2

xtermでは、\e]11;?\aエスケープシーケンスを使用して背景色を照会できます。端末から応答を読み取る必要があります。xtermcontrolあなたのためにそれを行うコマンドがあります:

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

同じことはgnome-terminalとおそらく他のいくつかのターミナルエミュレーターでも機能します(ただし、すべてではありません)。
エグモント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.