xprop(1) プロパティ表示アプリケーション

書式

xprop [-help] [-grammar] [-id id] [-root] [-name name] [-frame] [-font font] [-display display] [-len n] [-notype] [-fs file] [-remove property-name] [-set property-name value] [-spy] [-f atom format [dformat]]* [format [dformat] atom]*

概要

xprop は X サーバ内のウィンドウとフォントのプロパティを表示するためのユーティ リティである。 xprop においては、コマンド行の引き数を使ってウィンドウまたはフォントを1 つ選択する。ウィンドウの場合にはウィンドウをクリックして選択することも できる。これにより、プロパティのリストと(たぶん)フォーマット情報が与え られる。

オプション

-help
コマンド行オプションの概要を出力する。

-grammar
コマンド行オプションの全てに対する、細かい文法の説明を表示する。

-id id
このオプションを使うと、対象のウィンドウをポインタを使って選択する代わ りにコマンド行からウィンドウ id で選択することができる。 このオプションは X のアプリケーションをデバッグするときに大変便利であ る。すなわち、対象のウィンドウがスクリーンにマップされない場合や、ポイ ンタが利用できない場合、ポインタがアプリケーションの動作を妨げる場合に 有効である。

-name name
この引き数を使うと、ポインタを使って対象のウィンドウを選択する代わりに、 name という名前を持つウィンドウをコマンド行から選択すること ができる。

-font font
この引き数を使うと、ユーザはフォント font のプロパティを表示させ ることができる。

-root
この引き数は X のルートウィンドウを対象ウィンドウに指定する。 このオプションは、ルートウィンドウが他のウィンドウに完全に隠されている 場合に便利である。

-display display
この引き数を使うと、接続するサーバを指定することができる。 X(7) を参照すること。

-len n
読み込みや表示を行うプロパティの大きさの上限を n バイトに指定す る。

-notype
それぞれのプロパティの型を表示しないことを指定。

-fs file
多数のプロパティに対するフォーマットを入力するファイルとして file を使うことを指定。

-frame
ウィンドウを手動で選択するとき(つまり、-name, -root, -id のいずれも与えないとき)に、クライアントのウィンドウの代わり に(もしあれば)ウィンドウマネージャのフレームを参照することを指定する。

-remove property-name
指定した名前のプロパティを、指定されたウィンドウから取り除くことを指定 する。

-set property-name value
指定した名前のプロパティとそのプロパティの値を指定し、これらを 指定したウィンドウに設定する。

-spy
プロパティ変更イベントを監視することにより、ずっとウィンドウのプロパティ を調べ続ける。

-f name format [dformat]
name に対する formatformat であることと name に対する dformatdformat であることをを指定 する。dformat を省略した場合には、" = $0+\n" が指定されたものと 見なされる。

説明

これらのプロパティのそれぞれについて、選択されたウィンドウやフォントが 持つ値は、フォーマット情報が与えられていればそれを使って表示される。 フォーマット情報が与えられていなければ、内部的なデフォルト値が使用され る。選択されたウィンドウやフォントにおいてプロパティが定義されていなけ れば、そのプロパティに対しては "not defined" が表示される。プロパティ のリストが与えられていない場合には、選択されたウィンドウやフォントが所 有している全てのプロパティが表示される。

ウィンドウは次の4つの方法のうちのいずれかで選択することができる。第一 に、ルートウィンドウを選択したい場合には -root オプションが利用できる。 選択したいウィンドウがルートウィンドウでない場合、コマンド行から選 択する方法は2つある。すなわち、xwininfo 等で得られる ウィンドウ ID を使う方法と、ウィンドウが持っている名前を使う方法である。-id オプ ションは10進数か16進数の ID 番号でウィンドウを使って選択する(16進数の 場合は0x で始めなければならない)。-name オプションは名前を使ってウィン ドウを選択する。

ウィンドウを選択する最後の方法は、コマンド行とは全く関係がない。 -font, -id, -name, -root のいずれも指定されていない場合、十字形のカー ソルが表示され、ユーザは選択したいウィンドウ上でポインタのボタンをクリッ クすることで表示されている任意のウィンドウを選択することができる。ウィ ンドウではなくフォントのプロパティを表示したい場合には、-font オプショ ンを使ってコマンド行から選択するしかない。

上記の4つのオプションとヘルプを見るための -help オプション、コマンドラ インの詳しい文法を表示するための -grammer オプションを除いた コマンド行での引き数は全て、表示されるプロパティのフォーマットとプ ロパティの表示の仕方を指定するために使われる。 -len n オプションは、与えられたプロパティのうち長くても n バイトだけが読み込み、表示されるように指定する。例えば、全部表示させる と何ページになるかもしれないルートウィンドウのカットバッファを表示させ るような場合には、このオプションが有効である。

通常はプロパティ名のそれぞれに対して、プロパティ名が最初に表示され、次 に(もしあれば)その型が括弧付きで表示され、それから値が表示される。 -notype オプションを指定するとプロパティの型は表示されない。-fs オプションはプロパティのフォーマットを記述したファイルを指定するために 使われ、-f オプションはプロパティ1つに対してフォーマットを指定するために 使われる。

プロパティに対するフォーマット情報は具体的には2つの部分、すなわち formatdformat から構成される。format はプロパティ の実際のフォーマット(つまり、word, byte, long 等からなる)を指定し、 dformat はプロパティをどのように表示するかを指定する。

以降の段落においては、formatdformat の記述方法を説明す る。しかし、ほとんどのユーザとその使用目的に対しては必要がないであろう。 なぜなら、デフォルトで組み込まれているフォーマットには全ての標準プロパ ティを表示するために必要な formatdformat が含まれてい るからである。

format は、0, 8, 16, 32 のいずれかの後に1つ以上の フォーマット文字を続けたものである。 0, 8, 16, 32 の数字はプロパティにおいてフィールドごとにいくつビットが あるかを指定する。0 は特別な場合で、プロパティそのものに対応する フィールドサイズ情報を使うことを意味する。 (これは、プロパティのフィールドのサイズによって3つの異なる型 となる INTEGER 型のような、特別な場合にのみ必要となる。)

値が 8 の場合には、プロパティはバイト列であり、16の場合にはプロパティ はワード列である。この2つの違いは、プロパティを出力した元のマシンとは 逆のバイト順を持つマシンでプロパティを読みだした場合、ワード列ではバイ ト交換が行われるが、バイト列ではバイト列が行われないという点である。 プロパティのフォーマットや格納の方法に関する詳しい情報については、Xlib のマニュアルを参照すること。

フィールドのサイズが指定されると、それぞれのフィールドの型を指定す る必要がある(つまり、整数、文字列、アトムなど)。 これはフィールドごとのフォーマット文字1文字を使って指定する。 プロパティが与えたフォーマット文字よりも多くフィールドを持っている場合、 フォーマット文字の数を越えた分のフィールドに対しては、最後のフォーマッ ト文字が必要なだけ繰り返される。フォーマット文字列とその意味を以下に示 す:

a
このフィールドはアトム番号である。この型のフィールドのサイズは32で なければならない。
b
このフィールドは真偽値である。0 は偽を示し、それ以外の値は真を示す。
c
このフィールドは符号無しの数、つまり基数である。
i
このフィールドは符号付き整数である。
m
このフィールドはビットフラグの集合である。フラグは1の場合に立っている。
s
このフィールド以降で 0 またはプロパティが終わるまでのフィールドはバイ ト列を表す。このフォーマット文字と共に使えるのはサイズが8のフィールド だけである。このフィールドは大抵は文字列を表すために使われる。
t
このフィールドから 0 または属性の終わりまでのフィールドは 国際化テキスト文字列を表す。 このフォーマット文字列で使えるフィールドのサイズは 8 だけである。 この文字列は ICCCM 準拠のエンコーディングで使われることと、 出力される前に現在のロケールのエンコーディングに変換されることが 前提となる。
x
このフィールドは16進数である('c' と似ているが 16進表示される。 ウィンドウID 等を表示するときに非常に便利である)。

プロパティが各32ビットのフィールドを3つ持ち、その最初のフィールドが符 号付き整数、2番目のフィールドが符号無し整数、3つめのフィールドがアトム であるもののformat は32ica である。

format とは異なり、dformat のフォーマットはあまり厳密では ない。 dformat の制限は、文字とダッシュで始まってはならないことだけであ る。これは、プロパティ名やオプションと区別できるようにするためである。 dformat は、printf で使われているフォーマット文字列と同様の方法 で様々なフィールドに様々な場所に表示させるための、特別な文字列を含むテ キスト文字列である。例えば dformat が " is ( $0, $1 \)\n" であ る場合、フォーマットが 32ii である POINT 3, -4 に対しては " is ( 3, -4 )\n" と表示される。

dformat に含まれる $, ?, \, ( 以外の文字はそのまま表示される。 $, ?, \, ( を表示するにはその文字の前に \ を付けること。例えば、$ を 表示するには \$ とする。バックスラッシュを使った特殊シーケンスの中に はショートカットとして使われるものがある。例えば、\n は改行文字を表示 させ、 \t はタブ文字を表示させる。また、\o (oは10進数)は、 文字コードが o である文字を表示させる。

$ の後に数字 n を続けると、番号 n のフィールドが表示される。 表示されるフィールドのフォーマットは、対応する format でフォーマッ トを記述するために使われているフォーマット文字によって決まる。つまり、 基数が 'c' で記述されている場合は10進数で表示され、'x' で記述されてい る場合には16進数で表示される。

フィールドがプロパティに含まれていない場合(このようなプロパティがいく つかある)、その代わりに <field not available> が表示される。$n+ は、番号 n のフィールド、コンマ、番号 n+1 のフィールド、コ ンマ、... のような表示を、定義されている最後のフィールドまで続ける。 フィールド n が定義されていない場合には、何も表示されない。 これは値のリストになっているプロパティを表示する際に便利である。

? は条件式、つまり if-then 分のようなものを始めるときに使う。 ?exp(text)は、exp を評価した値がゼロ以外の時に限って text を表示する。これは次の2点において有効である。第一に、フラグ がセットされている時に限って表示を行うことが可能になる。第二に、状態数 を単なる数字としてではなく、名前として表示することが可能になる。 exp の文法を以下に示す:

exp
::= term | term=exp | !exp
term
::= n | $n | mn

! 演算子は論理演算の「not(否定)」であり、0 を 1 に変化させ、0でない値 を0に変化させる。= は等値演算子である。内部的には全ての式は32ビットの 数として表現されるため、-1 と 65535 は異なる値である点に注意すること。 = は2つの値が等しい場合には 1 を返し、異なる場合には 0 を返す。 n は定数 n を表し、$n は番号 n のフィールドの 値を表す。 mn は、対応する format においてフォーマット文字が 'm' であ る最初のフィールドが持つ番号 n のフラグが 1 ならば 1 を返し、そ うでなければ 0 を返す。

例: ?m3(count: $3\n) は、(0から数えて)番号3のフラグが立っている場合に のみフィールド 3 に count というラベルを付けて表示する。 ?$2=0(True)?!$2=0(False) は、フィールド2 の真偽値の反対の値を表示する。

プロパティを表示するには、xpropformatdformat の両方を表示する。xprop は、format のデフォルト値 32x と dformat のデフォルト値 " = { $0+ }\n" を使う前に、より細かいフォー マットの検索を試み、いくつかの場所を調べる。まず、プロパティ名を使って 検索が行われる。これが失敗するとプロパティの型を使って検索が行われ る。これにより、あるフォーマットのセットを使って STRING 型を定義す る一方で、STRING 型である プロパティ WM_NAME をこれと異なるフォー マットで定義することができる。このようにして、特定のプロパティに対して は与えられた型の表示フォーマットを上書きすることができる。

検索は次の順序で行われる: (もしあれば)プロパティ名で指定されたフォーマッ ト(WM_NAME では 8x)、-f オプションで指定されたフォーマット(最後の指定 から最初の指定への順)、(もしあれば)-fs オプションで指定したファイルの 内容、(もしあれば)環境変数 XPROPFORMATS で指定したファイルの内容、 xprop に組み込みのフォーマットのファイル。

-fs オプションや環境変数 XPROPFORMATS で参照されるファイルのフォーマッ トは、以下の形式の行を1つ以上持つものである。

name format [dformat]

name はプロパティ名か型の名前であり、formatname と共に使われる format であり、dformatname と共に使われる dformat である。dformat を省略し た場合には、" = $0+\n" が指定されたものとして処理される。

ルートウィンドウの名前を表示: xprop -root WM_NAME

clock に対するウィンドウマネージャヒントを表示: xprop -name xclock WM_HINTS

カットバッファの先頭部分を表示: xprop -root -len 100 CUT_BUFFER0

固定幅フォントのポイントサイズを表示: xprop -font fixed POINT_SIZE

ID 0x200007 のウィンドウの全てのプロパティを表示: xprop -id 0x200007

環境変数

DISPLAY
デフォルトのディスプレイを取得する。
XPROPFORMATS
xprop が取得する追加的なフォーマットの内容を含むファイルの名前を指定する。

著者

Mark Lillibridge, MIT Project Athena