Chapter 9 ウィンドウマネージャとセッションマネージャのための関数

9 章: ウィンドウマネージャとセッションマネージャのための関数

関数の用途をアプリケーション向け,ウィンドウマネージャ向け, セッションマネージャ向けに厳密に分類するのは困難であるが, この章で説明する関数はたいていウィンドウマネージャと セッションマネージャで使われる. これらの関数はほとんどのアプリケーション関数では使わないものと考えられ る. Xlib には以下のような管理を行うための関数が用意されている:

ウィンドウの親を変える

ひとつのスクリーン上でウィンドウの親を別のウィンドウに変えるには XReparentWindowを使う. スクリーンをまたがってウィンドウを動かす方法は存在しない.

XReparentWindow(display, w, parent, x, y)
Display *display;
Window w;
Window parent;
int x, y;
display
X サーバへの接続を指定する。
w
ウィンドウを指定する。
parent
親ウィンドウを指定する。
x

y
新しい親ウィンドウ内での位置の x, y 座標を指定する。

指定したウィンドウがマップされている場合、 XReparentWindowはこのウィンドウに対して自動的に UnmapWindowを実行してから、このウィンドウをウィンドウ階層内の現在位置より取り除き、 そして指定した親ウィンドウの子として挿入する。 このウィンドウは兄弟ウィンドウに対するスタック順が一番上となるように 配置される。

指定したウィンドウの親を変えた後、 XReparentWindowは X サーバに ReparentNotifyイベントを生成させる。 このイベントで返される override_redirect メンバには、ウィンドウの override_redirect 属性が設定される。 このメンバに Trueが設定されている場合、ウィンドウマネージャは普通はこのウィンドウを無視 すべきである。 最後に、もし指定したウィンドウが最初からマップされていれば、X サーバは このウィンドウに対して自動的に MapWindowリクエストを実行する。

以前に他のウィンドウに隠されていたウィンドウに対しては、X サーバは通常 の露出(exposure)の処理を実行する。 直前の MapWindowリクエストによって隠蔽された、最初の UnmapWindowリクエストが示す領域に対しては X サーバは Expose イベントを生成しない。 エラー BadMatchは以下の場合に起こる。

XReparentWindowはエラー BadMatch ,BadWindowを起こすことがある。

ウィンドウの生存期間の制御

クライアントのセーブセットとは他のクライアントのウィンドウのリストであ り、もし接続をクローズした時にクライアントのウィンドウのいずれかの 下位ウィンドウであれば、破棄してはならず、かつアンマップされた場合には 再びマップすべきウィンドウを持っている。 接続クローズの処理の詳しい情報については 2.6 節を参照すること。 ウィンドウのリペアレントを行ったウィンドウマネージャが異常終了したとき にアプリケーションのウィンドウが生き延びることができるようにするため、 Xlib にはセーブセットのための関数群が用意されている。 これらの関数を使うと、親が破棄されたときは普通は破棄される サブウィンドウの寿命を制御できる。 例えば、ウィンドウに枠を付け加えて装飾を追加しようとする ウィンドウマネージャはアプリケーションのリペアレントを行うかもしれない。 この時にフレームが破棄されるとアプリケーションのウィンドウは 破棄されるはずであるが、ウィンドウ階層内の前の位置に戻される。

ウィンドウが破棄されると、X サーバはセーブセットから自動的に ウィンドウを削除する。

クライアントのセーブセットに対してウィンドウの追加と削除を行うには XChangeSaveSetを追加する。

XChangeSaveSet(display, w, change_mode)
Display *display;
Window w;
int change_mode;
display
X サーバへの接続を指定する。
w
クライアントのセーブセットに追加または削除するウィンドウを指定する。
change_mode
モードを指定する。 SetModeInsert または SetModeDelete .を指定できる。

関数 XChangeSaveSetは指定したモードに従って、指定したウィンドウをクライアントの セーブセットに追加または削除する。 指定したウィンドウは他のクライアントが生成したものでなくてはならない。 そうでない場合にはエラー BadMatchとなる。

XChangeSaveSetはエラー BadMatch ,BadValue ,BadWindow を起こすことがある。

クライアントのセーブセットにウィンドウを追加するには XAddToSaveSetを追加する。

XAddToSaveSet(display, w)
Display *display;
Window w;
display
X サーバへの接続を指定する。
w
クライアントのセーブセットに追加するウィンドウを指定する。

関数 XAddToSaveSetは指定したウィンドウをクライアントのセーブセットに追加する。 指定したウィンドウは他のクライアントが生成したものでなくてはならない。 そうでない場合にはエラー BadMatchとなる。

XAddToSaveSetはエラー BadMatch ,BadWindow を起こすことがある。

クライアントのセーブセットからウィンドウを削除するには XRemoveFromSaveSetを使う。

XRemoveFromSaveSet(display, w)
Display *display;
Window w;
display
X サーバへの接続を指定する。
w
クライアントのセーブセットから削除するウィンドウを指定する。

関数 XRemoveFromSaveSetは指定したウィンドウをクライアントのセーブセットから削除する。 指定したウィンドウは他のクライアントが生成したものでなくてはならない。 そうでない場合にはエラー BadMatchとなる。

XRemoveFromSaveSetはエラー BadMatch ,BadWindow を起こすことがある。

インストールされているカラーマップの管理

X サーバはインストールされたカラーマップのリストを管理している。 このようなカラーマップを使っているウィンドウは正しい色で表示が行えるこ とを保証される。他のカラーマップを使っているウィンドウは正しい色で表示 できることもあるし、できないこともある。 Xlib にはカラーマップのインストールとアンインストールやインストールさ れたカラーマップのリストを取得するための関数が用意されている。

どんな時でも、インストールされているマップの部分集合が存在する。これは 順序付きリストとして見ることができ、「必須のリスト」と呼ばれる。 必須のリストの長さは最大で M である。ここで M は接続の設定の際に スクリーンに対して指定されたインストールされたカラーマップの最小数であ る。 必須のリストは以下のように管理される。 カラーマップが XInstallColormapに対して指定されると、このカラーマップはリストの先頭に追加される。 リストの末尾は必要に応じて切り詰められ、リストの長さが M を超えないよ うに保たれる。 カラーマップが XUninstallColormapに対して指定され、かつこのカラーマップが必須のリストに入っている場合は、 このカラーマップはリストから削除される。 X サーバがカラーマップを暗黙的にインストールした時は、カラーマップは 必須のリストに追加されない。また、X サーバは必須のリストに含まれる カラーマップを暗黙的にはアンインストールできない。

カラーマップをインストールするには XInstallColormapを使う。

XInstallColormap(display, colormap)
Display *display;
Colormap colormap;
display
X サーバへの接続を指定する。
colormap
カラーマップを指定する。

関数 XInstallColormapは、指定したカラーマップをカラーマップに対応するスクリーンに インストールする。 このカラーマップに関連する全てのウィンドウは即座に正しい色で表示される ようになる。 ウィンドウとカラーマップの対応づけは、ウィンドウを XCreateWindow ,XCreateSimpleWindow ,XChangeWindowAttributes ,XSetWindowColormapで作った時に行われる。

指定したカラーマップが既にインストールされているカラーマップでない場合、 X サーバはこのカラーマップを持っているウィンドウそれぞれに対して ColormapNotifyイベントを生成する。 さらに XInstallColormapを呼んだ結果としてインストールされている他の全てのカラーマップについて、 X サーバはこのカラーマップを持っているそれぞれのウィンドウにおいて ColormapNotifyイベントを生成する。

XInstallColormapはエラー BadColor を起こすことがある。

カラーマップをアンインストールするには XUninstallColormapを使う。

XUninstallColormap(display, colormap)
Display *display;
Colormap colormap;
display
X サーバへの接続を指定する。
colormap
カラーマップを指定する。

関数 XUninstallColormapは指定したカラーマップをスクリーンの必須のリストから取り除く。 その結果、指定したカラーマップはアンインストールされ、X サーバは追加の カラーマップを暗黙の内にインストールまたはアンインストールする。 どのカラーマップがインストールあるいはアンインストールされるのかは、 必須のリストはインストールされたままでなければならない点を除き、サーバ に依存する。

指定したカラーマップがアンインストールされた場合、 X サーバはそのカラーマップを持っているウィンドウ全てに対して ColormapNotifyイベントを生成する。 さらに、 XUninstallColormapの結果としてインストールあるいはアンインストールされた他の全ての カラーマップについて、X サーバはそのカラーマップを持っている ウィンドウにおいて ColormapNotifyイベントを生成する。

XUninstallColormapはエラー BadColorを起こすことがある。

指定されたスクリーンについて、現在インストールされているカラーマップの リストを得るには XListInstalledColormapsを使う。

Colormap *XListInstalledColormaps(display, w, num_return)
Display *display;
Window w;
int *num_return;
display
X サーバへの接続を指定する。
w
スクリーンを決めるウィンドウを指定する。
num_return
現在インストールされているカラーマップの数が返される。

XListInstalledColormapsは指定したウィンドウのスクリーンについて、現在インストールされている カラーマップのリストを返す。 リスト中のカラーマップの順序は重要でなく、必須のリストの明示的な指示も 行われない。 割り当てられたリストが不要になった場合には、 XFreeを使って解放すること。

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

フォント検索パスの設定と取得

サーバから利用できるフォントの集合はフォント検索パスに依存する。Xlib にはサーバのフォント検索パスの設定と取得のための関数が用意されている。

フォント検索パスを設定するには XSetFontPathを使う。

XSetFontPath(display, directories, ndirs)
Display *display;
char **directories;
int ndirs;
display
X サーバへの接続を指定する。
directories
フォントを探すために使うディレクトリパスを指定する。 空のリストをパスとして設定すると、X サーバに設定されたデフォルトのパス が復元される。
ndirs
パスに含まれるディレクトリの数を指定する。

関数 XSetFontPathはフォントを探すためのディレクトリ検索パスを定義する。 検索パスは X サーバごとに 1 つずつしかなく、クライアントは検索パスを持 たない。 エンコーディングと文字列の解釈は実装依存であるが、一般的には順序リスト としてディレクトリかフォントサーバを指定する。 X サーバはフォント情報を内部的にキャッシングすることが認められている。 例えば、1 つのファイルからフォント全体をキャッシュし、それより後にその フォントをオープンしたときには元のファイルが変更されたかどうかの チェックを行わなくてもよい。 しかしフォントパスが変更されれば、X サーバが現在キャッシュしている フォント情報はすべてフラッシュされることが保証されている。ただし、その 時点でリソース ID が明示的に割り当てられているフォントはフラッシュされ ない。 このリクエストで起こるエラーの意味は実装依存である。

XSetFontPathはエラー BadValueを起こすことがある。

現在のフォント検索パスを取得するには XGetFontPathを使う。

char **XGetFontPath(display, npaths_return)
Display *display;
int *npaths_return;
display
X サーバへの接続を指定する。
npaths_return
フォントパスの配列に含まれる文字列の個数が返される。

関数 XGetFontPathは検索パスを含む文字列の配列を割り当てて返す。 この文字列の内容は実装依存であり、クライアントアプリケーションによって 解釈されることは想定されていない。 文字列が必要なくなったときには、 XFreeFontPathを呼び出してフォントパスのデータを解放すること。

XGetFontPathが返したデータを解放するには XFreeFontPathを使う。

XFreeFontPath(list)
char **list;
list
解放する文字列の配列を指定する。

関数 XFreeFontPathXGetFontPathが割り当てたデータを解放する。

サーバのグラブ

Xlib にはサーバのグラブとグラブの解放を行うための関数が用意されている。 これらお関数を使うとウィンドウシステムのサーバが他の接続で行う出力の 処理を制御できる。 サーバがグラブされている間は、他のどの接続でもリクエストの処理や接続の クローズは起こらない。 接続を閉じようとしているクライアントは自動的にサーバのグラブを解放する。 サーバのグラブを行うことはできるだけ避けるべきであるが、場合によっては 必要なこともある。

サーバをグラブするには XGrabServerを使う。

XGrabServer(display)
Display *display;
display
X サーバへの接続を指定する。

関数 XGrabServerは、このリクエストを送った接続以外の全ての接続からのリクエストの処理や 接続のクローズを無効にする。 絶対に必要な場合以外には、X サーバをグラブすべきではない。

サーバのグラブを解放するには XUngrabServerを使う。

XUngrabServer(display)
Display *display;
display
X サーバへの接続を指定する。

関数 XUngrabServerは他の接続におけるリクエストの処理と接続のクローズを再開する。 X サーバをグラブするのは可能な限り避けるべきである。

クライアントの kill

Xlib にはクライアントとの接続を切断し、このクライアントのリソースを 破棄するための手続きが用意されている。 クライアントを破棄するには XKillClientを使う。

XKillClient(display, resource)
Display *display;
XID resource;
display
X サーバへの接続を指定する。
resource
破棄しようとするクライアントに関連するリソースか AllTemporaryを指定する。

関数 XKillClientは有効なリソースが指定された時に、そのリソースを生成したクライアントを 閉じさせる。 そのクライアントが既に RetainPermanent モードか RetainTemporary モードで終了していた場合は、クライアントのリソースは全て破棄される。 AllTemporary が指定されている場合は、 RetainTemporary モードで終了した全てのクライアントのリソースが破棄される(2.5 章を参照)。 これにより、ウィンドウマネージャがデバッグ補助機能を持つことが可能にな る。 クライアントは終了モードとして RetainTemporaryを設定できる。 この場合は、クライアントが異常終了しても、そのウィンドウは破棄されない。 プログラマはこの状態でアプリケーションのウィンドウツリーを調べてから、 ウィンドウマネージャを使ってゾンビウィンドウを破棄する。

XKillClientはエラー BadValue を起こすことがある。

スクリーンセイバーの制御

Xlib にはスクリーンセイバーのモードの設定と再設定、 スクリーンセイバーの有効化と無効化、スクリーンセイバーの現在の設定値を 取得するための関数が用意されている。

スクリーンセイバーのモードを設定するには XSetScreenSaverを使う。

XSetScreenSaver(display, timeout, interval, prefer_blanking, allow_exposures)
Display *display;
int timeout, interval;
int prefer_blanking;
int allow_exposures;
display
X サーバへの接続を指定する。
timeout
スクリーンセイバーが有効になるまでのタイムアウトを秒数で指定する。
interval
スクリーンセイバー切替えの間隔を秒数で指定する。
prefer_blanking
スクリーンのブランクの仕方を指定する。 DontPreferBlanking ,PreferBlanking ,DefaultBlankingのいずれかを指定できる。
allow_exposures
スクリーンセイバーの制御値を指定する。 DontAllowExposures ,AllowExposures ,DefaultExposuresのいずれかを指定できる。

タイムアウトと間隔は秒数で指定する。 タイムアウトが 0 ならば、スクリーンセイバーは無効化され(しかし、 アクティブになっているスクリーンセイバーは解除されない)、タイムアウトが -1 な らば、デフォルト値が復元される。 これ以外の負の値を指定するとエラー BadValueになる。 タイムアウト値が 0 でなければ、 XSetScreenSaverはスクリーンセイバーを有効にする。 間隔が 0 ならば、ランダムパターン動作が無効になる。 指定されたタイムアウトの秒数の間デバイス(キーボード、マウス等)からの入 力がなければ、スクリーンセイバーがアクティブになる。

各スクリーンに対してブランクが設定され、ハードウェアがビデオ表示の ブランクをサポートしている場合、スクリーンは単にブランクする。 そうでない場合で、露出が可能な場合か、スクリーンがクライアントに Expose イベントを送らずにスクリーン表示を再生成できる場合には、スクリーンは ルートウィンドウの背景タイルで埋められる。この際、描画の原点は interval 秒ごとにランダムに決め直される。 これ以外の場合にはスクリーンの状態は変化せず、スクリーンセイバーは アクティブにならない。 キーボードやポインタの次の入力があったときか、モードに ScreenSaverResetを指定して次の XForceScreenSaverを呼び出した時にスクリーンセイバーは解除され、スクリーンの全ての状態が 復元される。

サーバ依存のスクリーン保護機能が、周期的な画面書き換えをサポートしてい る場合、引き数 interval は書き換え周期の長さのヒントを与える。このヒント値 が 0 の場合は、周期的な画面書き換えをしてはならないことを示す。 スクリーンの書き換え方法の例としては、カラーマップをごちゃ混ぜにする方法、 アイコンイメージを周期的にスクリーンの周りで移動させる方法、スクリーン をルートウィンドウの背景タイルとし、定期的にランダムに原点を変える方法 が挙げられる。

XSetScreenSaverはエラー BadValue を起こすことがある。

強制的にスクリーンセイバーをオン/オフするには XForceScreenSaverを使う。

XForceScreenSaver(display, mode)
Display *display;
int mode;
display
X サーバへの接続を指定する。
mode
適用されるモードを指定する。 ScreenSaverActiveまたは ScreenSaverResetを指定できる。

指定したモードが ScreenSaverActive であり、かつスクリーンセイバーが現在アクティブでないならば、 XForceScreenSaverはタイムアウト値に0が指定されて無効になっていた場合も含めて、スクリー ンセイバーをアクティブにする。 指定したモードが ScreenSaverReset であり、かつスクリーンセイバーが現在有効ならば、 XForceScreenSaverは、スクリーンセイバーがアクティブになっていればスクリーンセイバーを無 効にし、アクティブ化のタイマーを(デバイスからの入力があったかのように) 初期状態にリセットする。

XForceScreenSaverはエラー BadValue を起こすことがある。

スクリーンセイバーをアクティブにするには XActivateScreenSaverを指定する。

XActivateScreenSaver(display)
Display *display;
display
X サーバへの接続を指定する。

スクリーンセイバーをリセットするには XResetScreenSaverを使う。

XResetScreenSaver(display)
Display *display;
display
X サーバへの接続を指定する。

スクリーンセイバーの現在の状態値を得るには XGetScreenSaverを使う。

XGetScreenSaver(display, timeout_return, interval_return, prefer_blanking_return,
allow_exposures_return)
Display *display;
int *timeout_return, *interval_return;
int *prefer_blanking_return;
int *allow_exposures_return;
display
X サーバへの接続を指定する。
timeout_return
スクリーンセイバーが有効になるまでのタイムアウトが秒数で返される。
interval_return
スクリーンセイバーの起動までの間隔が返される。
prefer_blanking_return
スクリーンの現在のブランクの仕方が返される (DontPreferBlanking ,PreferBlanking ,DefaultBlanking のいずれか)。
allow_exposures_return
スクリーンセイバーの現在の制御値が返される (DontAllowExposures ,AllowExposures ,DefaultExposuresのいずれか)。

ホストのアクセス制御

この節では以下のことを行う方法を説明する:

X にはウィンドウ単位での防御機構は用意されていない。 あるリソースのリソース ID を調べることができれば、そのリソースを操作で きる。 しかし最低限のレベルの防御を行うため、接続は信頼しているマシンに対して のみ許可される。 これは単独ユーザのワークステーションでは適切であるが、 タイムシェアリングして使っているマシンでは明らかに破綻する。 X プロトコルには接続の適切な認証のための準備はされているが、標準的な 認証サーバがないためにホストレベルの制御が唯一の共通の機構のままになっ ている。

接続をオープンできるホストの集合は普通、初期状態では以下のホストからなる:

アクセス制御機構が有効な時にホストがアクセス制御リストに含まれていない 場合に、そのホストが接続を確立しようとするとサーバは接続を拒否する。 アクセスリストを変更するには、クライアントはサーバと同じホストにあるか、 接続の設定時の初期認証で許可を受けていなければならない。

サーバはこのホストアクセス機能に追加する形、あるいはこの機能を置き換え る形で別のアクセス制御機構を実装することもできる。 他の制御機構の実装に関する詳しい情報については「X Window System Protocol」 を参照すること。

ホストの追加/取得/削除

Xlib にはアクセス制御リストに対してホストを追加/取得/削除を行うための 関数が用意されている。 ホストのアクセス制御を行う全ての関数は XHostAddress 構造体を使う。この構造体の内容は以下の通りである:

typedef struct {
	int family;	/* FamilyInternet 等を指定 */
	int length;	/* アドレスの長さをバイト単位で指定 */
	char *address;	/* アドレスが格納されている場所を指すポインタ */
} XHostAddress;

family メンバはどのプロトコルアドレスファミリ(TCP/IP, DECnet 等)を使 うかを指定する。このメンバには FamilyInternet ,FamilyDECnet ,FamilyChaosのいずれかを指定できる。 length メンバにはアドレスの長さをバイト単位で指定する。 address メンバにはアドレスを指すポインタを指定する。

TCP/IP の場合、アドレスはネットワークバイト順でなければならない。 DECnet ファミリの場合は、サーバがアドレスに含まれるバイトデータを 自動的に交換することはない。 Phase IV のアドレスの長さは 2 である。 最初のバイトにはノード番号の下位の 8 ビットが含まれる。 2 番目のバイトは、下位の 2 ビットがノード番号の上位の 8 ビットであり、 上位 6 ビットが領域データである。

ホストを一つ追加するには XAddHostを使う。

XAddHost(display, host)
Display *display;
XHostAddress *host;
display
X サーバへの接続を指定する。
host
追加するホストを指定する。

関数 XAddHostは指定したホストをディスプレイのアクセス制御リストに追加する。 サーバのホストはこのコマンドを発行したクライアントのホストと同じでなけ ればならない。そうでない場合はエラー BadAccessとなる。

XAddHostはエラー BadAccess ,BadValueを起こすことがある。

複数個のホストを同時に追加するには XAddHostsを使う。

XAddHosts(display, hosts, num_hosts)
Display *display;
XHostAddress *hosts;
int num_hosts;
display
X サーバへの接続を指定する。
hosts
追加するホストを複数個指定する。
num_hosts
ホストの数を指定する。

関数 XAddHostsは、指定した複数個のホストをディスプレイのアクセス制御リストに追加する。 サーバのホストは、このコマンドを発行したクライアントのホストと同じでな ければならない。そうでない場合、エラー BadAccessとなる。

XAddHostsはエラー BadAccess ,BadValueを起こすことがある。

ホストのリストを取得するには XListHostsを使う。

XHostAddress *XListHosts(display, nhosts_return, state_return)
Display *display;
int *nhosts_return;
Bool *state_return;
display
X サーバへの接続を指定する。
nhosts_return
現在アクセス制御リストに入っているホスト数が返される。
state_return
アクセス制御の状態が返される。

関数 XListHostsは現在のアクセス制御リストを返す。これと同時に、接続のセットアップ時に リストの使用が有効であったかどうかを返す。 XListHostsを使えば、プログラムはどのホストが接続可能かを知ることができる。 この関数は割り当てたホスト構造体のリストへのポインタを返す。 リストが不要になれば、 XFreeを使ってこのメモリ領域を解放すること。

ホストを一つ削除するには XRemoveHostを使う。

XRemoveHost(display, host)
Display *display;
XHostAddress *host;
display
X サーバへの接続を指定する。
host
削除するホストを指定する。

関数 XRemoveHostは、指定したホストをディスプレイのアクセス制御リストから削除する。 サーバとクライアントプロセスは同じホスト上になければならない。そうでな い場合、エラー BadAccessとなる。 自分のマシンをアクセスリストから削除すると、それ以降サーバに接続できな くなってしまう。サーバをリセットしない限り元の状態に戻すことはできない。

XRemoveHostはエラー BadAccess ,BadValueを起こすことがある。

複数個のホストを同時に削除するには XRemoveHostsを使う。

XRemoveHosts(display, hosts, num_hosts)
Display *display;
XHostAddress *hosts;
int num_hosts;
display
X サーバへの接続を指定する。
hosts
削除するホストを複数個指定する。
num_hosts
ホストの数を指定する。

関数 XRemoveHostsは、指定した複数個のホストをディスプレイのアクセス制御リストから削除する。 サーバとクライアントプロセスは同じホスト上になければならない。そうでな い場合、エラー BadAccessとなる。 自分のマシンをアクセスリストから削除すると、それ以降サーバに接続できな くなってしまう。サーバをリセットしない限り元の状態に戻すことはできない。

XRemoveHostsはエラー BadAccess ,BadValueを起こすことがある。

アクセス制御の変更/有効化/無効化

Xlib にはアクセス制御の有効化/無効化/変更のための関数が用意されている。

これらの関数を正常に動作させるためには、クライアントアプリケーションは X サーバと同じホスト上にあるか、接続の設定時の最初の認証の時に許可を与 えられていなければならない。

アクセス制御を変更するには XSetAccessControlを使う。

XSetAccessControl(display, mode)
Display *display;
int mode;
display
X サーバへの接続を指定する。
mode
モードを指定する。 EnableAccessあるいは DisableAccessを指定できる。

関数 XSetAccessControlは接続の設定の時に、アクセス制御リストの使用を有効あるいは無効にする。

XSetAccessControlはエラー BadAccess ,BadValueを起こすことがある。

アクセス制御を有効にするには XEnableAccessControlを使う。

XEnableAccessControl(display)
Display *display;
display
X サーバへの接続を指定する。

関数 XEnableAccessControlは、接続の設定の時にアクセス制御リストの使用を有効にする。

XEnableAccessControlはエラー BadAccessを起こすことがある。

アクセス制御を無効にするには XDisableAccessControlを使う。

XDisableAccessControl(display)
Display *display;
display
X サーバへの接続を指定する。

関数 XDisableAccessControlは接続の設定時にアクセス制御リストの使用を無効にする。

XDisableAccessControlはエラー BadAccessを起こすことがある。


目次に戻る