いまさらXwindowの勉強をするのは既に古いかもしれません。 まあ、何でも勉強ということで。
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
int main(){
Window Win;
Display *Disp;
int gScreen;
XEvent Ev;
// base GC
GC Gc;
Disp = XOpenDisplay( NULL ); /* Xサーバに接続する */
gScreen = DefaultScreen( Disp ); /* スクリーン設定 */
Win = XCreateSimpleWindow( /* ウィンドウを開く */
Disp, /* Xサーバ */
RootWindow(Disp, gScreen), /* 親ウィンドウ */
0, 0, /* 表示時の左上隅の座標 x, y */
200, 100, /* ウィンドウの幅と高さ */
1, BlackPixel(Disp, gScreen),/* ボーダーの幅と色 */
WhitePixel(Disp, gScreen) /* ウィンドウの背景色 */
);
XSetStandardProperties( Disp, Win, "Sample", "Sample",
None, NULL, 0, NULL);
/* MAP NOTIFYING */
XSelectInput( Disp, Win, StructureNotifyMask );
XMapWindow( Disp, Win ); /* ウィンドウのマッピング */
Gc = DefaultGC( Disp, gScreen ); /* グラフィックコンテキストの設定 */
XSetForeground( Disp, Gc, BlackPixel(Disp, gScreen) ); /* 描画色設定 */
XSetBackground( Disp, Gc, WhitePixel(Disp, gScreen));
while(1){
XNextEvent( Disp, &Ev);
if( Ev.type == MapNotify ) break;
}
XFlush( Disp );
printf("Hit Enter key to end...");
getchar(); getchar();
XFreeGC( Disp, Gc );
XDestroyWindow( Disp, Win );
return 0;
}
このソースをコンパイルするときは、
gcc sample.c -o sample -L/usr/X11R6/lib -I/usr/X11R6/include -lX11としてください。小さなウインドウが一つ現れましたか?リターンキーを2度押すと 終了します。