Xlib (X library, рус. библиотека «икс») — библиотека функций клиента системы X Window, написанная на языке Си.
Содержит функции для взаимодействия с т. н. X-сервером. Библиотека позволяет использовать более высокий уровень абстракции, без знания деталей работы основного протокола системы X Window.
Некоторые пользовательские приложения используют Xlib напрямую (например, Opera), другие используют специальные инструментарии «виджетов» - «надстройки» над базовой библиотекой Xlib.
Библиотека Xlib появилась около 1985 года и на настоящее время используется как основа и как основной графический интерфейс пользователя во многих Юникс-подобных операционных системах.
Библиотека XCB - попытка разработки замены Xlib.
Функции XLib могут быть сгруппированы в несколько категорий:
XOpenDisplay
, XCloseDisplay
XCreateWindow
, XCreateSimpleWindow
, XCreateGC
, XCreateColomap
XNextEvent
, или операции с локальными данными XCreateImage
.Следующий пример программы устанавливает соединение с X сервером и выводит на экран окно с приветствием:
/*
Компилируется след. строкой: cc test.c -o test -lX11
*/
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
extern int errno;
int main(void) {
Display *d;
Window w;
XEvent e;
const char *msg = "Hello, World!";
int s;
/* Соединиться с X сервером, если X сервер на удаленной машине
* следует разрешить на машине, где запущен X Server
* удаленные соединения командой xhost+ (см. man xhost)
*/
if ((d = XOpenDisplay(getenv("DISPLAY"))) == NULL) {
printf("Can't connect X server:%s\n", strerror(errno));
exit(1);
}
s = XDefaultScreen(d);
/* Создать окно */
w = XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 200, 200, 1,
XBlackPixel(d, s), XWhitePixel(d, s));
/* На какие события будем реагировать */
XSelectInput(d, w, ExposureMask | KeyPressMask);
/* Вывести окно на экран */
XMapWindow(d, w);
/* Бесконечный цикл обработки событий */
while (1) {
XNextEvent(d, &e);
/* Перерисовать окно */
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));
}
/* При нажатии кнопки-выход */
if (e.type == KeyPress)
break;
}
/* Закрыть соединение с X сервером */
XCloseDisplay(d);
return 0;
}
Клиент (программа) создает соединение с X сервером функцией XOpenDisplay
, в которую передается указатель на DISPLAY, определенный через переменную среды исполнения. В UNIX это можно сделать командой export DISPLAY=":0.0". В качестве переменной DISPLAY можно указать и удаленную машину с запущенным X сервером. Функция (макрос) DefaultScreen
выбирает текущий экран (в X Window может быть несколько экранов), XCreateSimpleWindow
создает окно, а XSelectInput
определяет события, на которые окно должно реагировать. XMapWindow
выводит окно на экран, а XNextEvent
выбирает из очереди событие, которое выше было определено. При событии Expose
в окне рисуется прямоугольник и выводится строка "Hello World!". При нажатии клавиши на клавиатуре программа завершает работу.
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .