xprop
を実行すると、2つの値を持つクラス文字列が取得されます。1つはi [3]がinstance
を呼び出し、もう1つはclass
をchromium-browser
などで呼び出します。 xprop
ユーティリティは次のようなものを返します、
WM_CLASS(STRING) = "chromium-browser", "Chromium-browser"
ウィンドウとこれら2つのフィールドに関する公式のガイダンスは何ですか?このため、それらはかなり似ています。彼らは今までとは違うのですか?もしそうなら、私は何を選ぶべきですか、そしてなぜですか? GUI作成者は、自分の名前をどのようにクラス化してインスタンス化するのですか?
実際の動作は (Inter-Client Communication Conventions Manual(ICCM))というタイトルの仕様 で定義されています。基本的にクラス名はアプリを作った人が指定します。インスタンス名はユーザーが指定でき、存在する場合はクラス名をオーバーライドする必要があります。
X11r6のICCMv2がWM_CLASS
、
4.1.2.5。
WM_CLASS
プロパティ
WM_CLASS
プロパティ(制御文字なしのタイプSTRINGの)には、2つの連続したヌル終了ストリングが含まれています。これらは、アプリケーションのリソースを検索するため、または識別情報として、クライアントとウィンドウマネージャーの両方が使用するインスタンス名とクラス名を指定します。このプロパティは、ウィンドウがWithdrawed状態を終了するときに存在する必要があり、ウィンドウがWithdrawn状態にあるときにのみ変更できます。ウィンドウマネージャーは、起動時とウィンドウがWithdrawn状態を離れたときにのみプロパティを調べることができますが、クライアントがその状態を動的に変更する必要はありません。それぞれ2つの文字列は次のとおりです。
このウィンドウを所有するクライアントが属するアプリケーションの特定のインスタンスを指定する文字列。インスタンス名で指定されたリソースは、クラス名で指定されたリソースをオーバーライドします。インスタンス名は、オペレーティングシステム固有の方法でユーザーによって指定できます。 POSIX準拠のシステムでは、次の規則が使用されます。
-name NAME
はコマンドラインで指定され、NAME
はインスタンス名として使用されます。- それ以外の場合、環境変数
RESOURCE_NAME
が設定されている場合、その値がインスタンス名として使用されます。- それ以外の場合、プログラムの呼び出しに使用される名前の末尾部分(
argv[0]
すべてのディレクトリ名を取り除いたもの)がインスタンス名として使用されます。- このウィンドウを所有するクライアントが属するアプリケーションの一般的なクラスを指定する文字列。クラスで指定されたリソースは、同じクラス名を持つすべてのアプリケーションに適用されます。 クラス名はアプリケーション作成者によって指定されます。一般的に使用されるクラス名の例には、「Emacs」、「XTerm」、「XClock」、「XLoad」があります。 、 等々。
ご了承ください
WM_CLASS
文字列はnullで終了するため、STRING
プロパティがnullで区切られているという一般的な規則とは異なります。この不整合は、下位互換性のために必要です。
(私が追加した太字の強調)