gsettings
とdconf
については知っていますが、アクティブなプロファイルに関する言及が見つかりません。現在のプロファイルが何であるかを知らずに、プロファイルのみをリストできるようです。
背景色をクエリして、Vimで背景を適切に設定したい。
質問はコメントで修正されました:背景色を取得する方法は?これには、xtermcontrol --get-bg
コマンドを使用できます。
この特定のコマンドは、OSC 11(前景; xtermcontrol --get-fg
)、OSC 4(パレットの色; xtermcontrol --get-color0
.. --get-color15
と共に通常使用されるOSC 11エスケープシーケンスをサポートするターミナルエミュレータに依存しています。 )および他のいくつか。人気のある端末エミュレータにはこれらを実装するものもあれば、そうでないものもあるため、これらのコマンドはどこでも機能しません。 VTEウィジェット、したがってgnome-terminal
などのVTEベースのターミナルエミュレーターはこれらをサポートします。
これらのエスケープシーケンスは、色を設定するのではなく、色を照会するために使用される場合、非常に注意が必要です。応答は、キーボードから来たかのように、つまりユーザーが入力したかのように、ターミナルエミュレータによって挿入されます。 xtermcontrol
はこの入力を読み取り、出力として印刷して、この技術的な詳細を隠します。 (そして、本当にしたい場合は、xtermcontrol
をだまして、間違った答えをキーボードから手動で入力することで報告できます(笑)。)
元の質問に戻る:
Gnome-terminalで現在のプロファイルを照会する方法はありません。どうして?
gsettings
またはdconf
の読み取りは、次の2つの理由で機能しません。
これらには、ランタイム情報ではなく、gnome-terminalの静的構成(設定)が含まれています。ランタイム情報が含まれていたとしても、開いているすべてのgnome-terminalウィンドウとタブの情報を含める必要があり、それぞれが個別のプロファイルを使用している可能性があります。そして、どういうわけか、まだどれを探すべきかを特定する必要があります。
それらはローカルでのみ機能し、たとえばsu
またはssh
。
gnome-terminalは、ウィンドウまたはタブが開かれたときに環境変数を初期化できますが、プロファイルが変更された場合に環境変数を後で更新する方法はありません。 ( https://bugzilla.gnome.org/show_bug.cgi?id=73342 の$COLORFGBG
に関する議論も参照してください。)
ユーザーがキーボードから入力したかのように、エスケープシーケンスへの応答として現在のプロファイルを報告できます(前述のOSC 4、10、11と同様)。ただし、これには標準がなく、セキュリティに影響することさえあります( https://bugzilla.gnome.org/show_bug.cgi?id=15126 を参照)。さらに、おそらくxtermcontrol
ではサポートされていませんこれから何年もの間、実用性があります(それは、まだ256色もサポートしていません)。