web-dev-qa-db-ja.com

現在のGNOME端末プロファイルを取得する方法は?

gsettingsdconfについては知っていますが、アクティブなプロファイルに関する言及が見つかりません。現在のプロファイルが何であるかを知らずに、プロファイルのみをリストできるようです。

背景色をクエリして、Vimで背景を適切に設定したい。

3
user1685095

質問はコメントで修正されました:背景色を取得する方法は?これには、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つの理由で機能しません。

    1. これらには、ランタイム情報ではなく、gnome-terminalの静的構成(設定)が含まれています。ランタイム情報が含まれていたとしても、開いているすべてのgnome-terminalウィンドウとタブの情報を含める必要があり、それぞれが個別のプロファイルを使用している可能性があります。そして、どういうわけか、まだどれを探すべきかを特定する必要があります。

    2. それらはローカルでのみ機能し、たとえば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色もサポートしていません)。

4
egmont