Xlib
- 1.8.10 (2024年7月28日;穩定版本)[1]
- gitlab
.freedesktop .org /xorg /lib /libx11
- Expat许可证
- X11許可證
- 历史许可通知和免责声明
Xlib是一種X Window System協定的用戶端,以C語言撰寫。其功能是與X server溝通。這樣的功能可以讓程式人員撰寫程式時,毋須了解其協定的細節。但甚少應用程式會直接使用Xlib;通常是透過其他的函式庫來呼叫Xlib用以提供部件工具箱(widget toolkits):
- Intrinsics(Xt)
- Xaw(Xaw)
- Motif
- GTK+
- Qt(X11 version)
- Tk
Xlib發表於1985年,目前使用在許多的Unix-like作業系統上。
目前XCB有可能取代Xlib.
資料型別
Xlib主要的資料型別是Display
[2]結構。
範例
下面是一個XLib的範列,產生一個視窗。
/* Simple Xlib application drawing a box in a window. gcc input.c -o output -lX11 */ #include <X11/Xlib.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> int main(void) { Display *d; Window w; XEvent e; char *msg = "Hello, World!"; int s; bool done = false; /* open connection with the server */ d = XOpenDisplay(NULL); if (d == NULL) { fprintf(stderr, "Cannot open display\n"); exit(1); } s = DefaultScreen(d); /* create window */ w = XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 640, 480, 0, BlackPixel(d, s), WhitePixel(d, s)); /* register interest in the delete window message */ Atom wmDeleteMessage = XInternAtom(d, "WM_DELETE_WINDOW", False); XSetWMProtocols(d, w, &wmDeleteMessage, 1); /* select kind of events we are interested in */ XSelectInput(d, w, ExposureMask | KeyPressMask | StructureNotifyMask); /* map (show) the window */ XMapWindow(d, w); /* event loop */ while (!done) { XNextEvent(d, &e); /* draw or redraw the window */ if (e.type == Expose) { XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10); XDrawString(d, w, DefaultGC(d, s), 50, 50, msg, strlen(msg)); } /* exit on key press */ switch(e.type){ case KeyPress: XDestroyWindow(d, w); break; case DestroyNotify: done = true; break; case ClientMessage: if (e.xclient.data.l[0] == wmDeleteMessage){ done = true; } break; } } /* close connection to server */ XCloseDisplay(d); return 0; }
注釋
- ^ "[ANNOUNCE libX11 1.8.10"]; 作者姓名字符串: Alan Coopersmith; 检索日期: 2024年7月29日.
- ^ Display Structure on freedesktop CVS. Tip search for: typedef struct _XDisplay Display. [2009-07-09]. (原始内容存档于2008-01-31).
外部連結
- Xlib Programming Manual
- Manual pages for all Xlib functions (页面存档备份,存于互联网档案馆)
- Kenton Lee's pages on X Window and Motif (页面存档备份,存于互联网档案馆)
- A short tutorial on Xlib (页面存档备份,存于互联网档案馆)
- A longer tutorial on Xlib
- Using Xlib for creating a screensaver module (页面存档备份,存于互联网档案馆)
- Simple X11 toolkit for learning Xlib
- 查
- 论
- 编
- 核心協定
- X Window选择(英语:X Window selection)
- X Toolkit Intrinsics
- X窗口授权(英语:X Window authorization)
- X11颜色名称(英语:X11 color names)
- X输入法
- Wayland
- X图像扩展(英语:X Image Extension)
- X键盘扩展(英语:X keyboard extension)
- RandR
- X渲染扩展(英语:X Rendering Extension)
- 形状扩展(英语:Shape extension)
- 共享内存扩展(英语:MIT-SHM)
- X显示管理器控制协议(英语:XDM (display manager))
- X视频扩展(英语:X video extension)
- X视频运动补偿(英语:X-Video Motion Compensation)
- AIGLX(英语:AIGLX)
- GLX(英语:GLX)
- 多指针X(英语:Multi-Pointer X)
- Display PostScript
- 合成(英语:Composite (graphics))
- Xinerama(英语:Xinerama)
和值得注意的
实现
显示服务器(英语:display server) | |||||||
---|---|---|---|---|---|---|---|
客户端库 |
| ||||||
显示管理器 会话管理器 |
| ||||||
X視窗管理器 |
|