XSetWMHints(3) ウィンドウマネージャのヒント構造体を割り当てる関数とウィンドウの WM_HINTS プロパティの設定・取得を行う関数群

Other Alias

XAllocWMHints, XGetWMHints, XWMHints

書式

XWMHints *XAllocWMHints()

XSetWMHints(display, w, wmhints)

      Display *display;

      Window w;

      XWMHints *wmhints;

XWMHints *XGetWMHints(display, w)

      Display *display;

      Window w;

引き数

display
X サーバへの接続を指定する。
w
ウィンドウを指定する。
wmhints
使用する XWMHints 構造体を指定する。

説明

関数 XAllocWMHintsXWMHints 構造体を割り当て、この構造体へのポインタを返す。 XWMHints 構造体の全てのフィールドは 0 で初期化される点に注意すること。 十分なメモリが確保できない場合、 XAllocWMHints は NULL を返す。 この構造体に割り当てられたメモリを解放する時には XFree を使用すること。

関数 XSetWMHints はウィンドウマネージャへのヒントを設定する。 このヒントにはアイコンの情報や位置やウィンドウの初期状態、アプリケーション はウィンドウマネージャ経由でキーボード入力を取得するかどうかなどの情 報が含まれる。

XSetWMHints はエラー BadAlloc, BadWindow を起こすことがある。

関数 XGetWMHints はウィンドウマネージャへのヒントを読み、ウィンドウに WM_HINTS プロパティ が設定されていなければ NULL を返し、成功すれば XWMHints 構造体へのポインタを返す。 データを使い終った後は XFree を呼んでメモリを解放すること。

XGetWMHints はエラー BadWindow を起こすことがある。

プロパティ

WM_HINTS
ウィンドウマネージャの使用のためにクライアントによって設定される追加 のヒント。 このプロパティの C 言語での型は XWMHints である。

構造体

XWMHints 構造体の内容は以下である。

#define InputHint (1L << 0)
#define StateHint (1L << 1)
#define IconPixmapHint (1L << 2)
#define IconWindowHint (1L << 3)
#define IconPositionHint (1L << 4)
#define IconMaskHint (1L << 5)
#define WindowGroupHint (1L << 6)
#define UrgencyHint (1L << 8)
#define AllHints (InputHint|StateHint|IconPixmapHint|
IconWindowHint|IconPositionHint|
IconMaskHint|WindowGroupHint)
typedef struct {
     long flags;         
     Bool input;         
     int initial_state;  
     Pixmap icon_pixmap; 
     Window icon_window; 
     int icon_x, icon_y; 
     Pixmap icon_mask;   
     XID window_group;   
     
} XWMHints;

input メンバは、アプリケーションが使う入力フォーカスモデルを ウィンドウマネージャに伝えるために用いられる。 リアルエステートドリブンフォーカス(real-estate driven focus)を使う X バージョン 10 スタイルのアプリケーションのように、入力を期待するが明示 的にサブウィンドウにフォーカスを設定しない(つまり、フォーカス管理の プッシュモデルを使っている)アプリケーションでは、このメンバを True に設定すべきである。 同様に、ウィンドウマネージャによってトップレベルウィンドウにフォーカス が与えられた時だけ入力フォーカスがサブウィンドウに設定される アプリケーションでも、このメンバを True に設定すべきである。 キーボードの入力が必要なときには明示的にフォーカスをサブウィンドウに設 定することによって自分自身で入力を管理するような(つまり、フォーカス管 理のプルモデルを使っている)アプリケーションでは、このメンバを False に設定すべきである。 キーボードの入力を全く使わないアプリケーションでも、このメンバを False に設定すべきである。

プルモデルのウィンドウマネージャは、input メンバが True であるアプリケーションのトップレベルウィンドウに入力フォーカスを設定 することによって、プッシュモデルのアプリケーションが入力を取得できるよ うにしなければならない。 プッシュモデルのウィンドウマネージャは、しかるべきタイミング(例えば、 input メンバが False であるアプリケーションが入力フォーカスをサブウィンドウに設定したとき) に入力フォーカスを PointerRoot にリセットすることによって、プルモデルのアプリケーションがウィンドウマ ネージャを破壊してしまわないように注意しなければならない。

initial_state フラグの定義を以下に示す。

#define WithdrawnState 0
#define NormalState 1


#define IconicState 3


icon_mask は icon_pixmap のどのピクセルがアイコンとして使用されるかを 指定する。 これを使えば非矩形のアイコンを利用できる。 icon_pixmap と icon_mask はいずれもビットマップでなければならない。 icon_window は、与えたウィンドウをアイコンとして使うことができるウィン ドウマネージャのために、アプリケーションにウィンドウを提供させる。 window_group は、このウィンドウが他のウィンドウのグループに属している ことを示す。 例えばある単独のアプリケーションが複数のトップレベルウィンドウを操作す る場合に window_group を使えば、ウィンドウマネージャが 1 つのウィンドウ だけでなく全てのウィンドウを同時にアイコン化させるために十分な情報を与 えることができる。

UrgencyHint フラグが flags フィールドに設定されていれば、クライアントはウィンド ウの内容が緊急事項であり、ユーザの適時な応答を必要とすることを示す。 ウィンドウマネージャはこのフラグが設定されている間、ユーザの注意を引 くために何らかの動作をする。 クライアントは、ユーザがこの urgency フラグをクリアするための何らかの 手段(ウィンドウの urgent フラグの条件を緩和するか、単にアラームを止め る)か、ウィンドウが消されるための手段を用意しなければならない。

返り値

BadAlloc
要求されたリソースやサーバのメモリの割り当てにサーバが失敗した。
BadWindow
引き数 Window の値が、定義されたウィンドウを指していない。