xlsatoms
詳細情報
- 作者
- Jim Fulton, MIT X Consortium
- 公開
- 種類
- X11ユーティリティ
- ライセンス
- MIT
- ソースコード
- gitlab.freedesktop.org
Xサーバーが知っているすべてのアトムを一覧表示するコマンド。番号1の定義済みPRIMARYから、今日のクライアントが登録した数千個の名前まで並ぶ。サーバーは一度覚えた名前を決して忘れない。
アトムはXプロトコルが文字列をやり取りせずに済ませるための仕組みだ。名前は InternAtom で一度だけ登録され、32ビットの番号が割り当てられる。その番号がプロパティ、セレクション、ClientMessageで使われる。1989年にJim Fultonが書いたxlsatomsは、番号1から順に GetAtomName を呼び、サーバーがエラーを返すまで番号と名前を出力する。最初の68個はプロトコルで固定されており、どのサーバーでも同じだ。PRIMARYが1、ATOMが4、WM_COMMANDが34、WM_CLIENT_MACHINEが36、WM_TRANSIENT_FORが68である。それ以降は、サーバー起動後にいずれかのクライアントが作った名前が作成順に並ぶ。-range 60-70 で範囲を指定でき、-name _NET_WM_PID でシェルから検索できる(存在しなければエラーを返す)。-format はprintf形式で出力を整える。
この一覧は考古学の地層のようなものだ。コアプロトコルにはアトムを削除するリクエストがないため、名前はサーバーを再起動するまで残り続け、作ったクライアントが何週間も前に消えていても変わらない。普通のデスクトップなら一週間ほどの稼働で数千行になり、GDK_ と _NET_ が最大の二つの集団になることが多い。どのツールキットやウィンドウマネージャ、拡張が通り過ぎたかが読み取れる。そのためアトムリークの発見にも使える。ウィンドウやツールチップごとに新しい一意な名前を登録するプログラムがあると、Xがメモリを食う理由を誰かが不思議に思うまでテーブルが膨らむ。xlsatoms | wc -l を前後で比べれば一分で分かる。