На цій сторінці показано неперевірені зміни

Xlib (libX11,X library — бібліотека X) —програмна бібліотека функційклієнтасистеми X Window (X11), написана намові Сі. Містить функції для взаємодії з так званим X-сервером. Бібліотека дозволяє використовувати вищий рівень абстракції, без знання деталей роботи основного протоколу системи X Window.
Деякі користувацькі програми використовують Xlib безпосередньо (наприклад,Opera), інші використовують спеціальні інструментарії«віджетів» — «надбудови» над базовою бібліотекою Xlib:
Бібліотека Xlib з'явилася близько 1985 року і натепер використовується як основа і як основнийграфічний інтерфейс користувача в багатьох Юнікс-подібних операційних системах.
Як альтернативу можна відзначити бібліотекуXCB, спробу розробки заміни Xlib.
Функції XLib можуть бути згруповані в декілька категорій:
Наступний приклад програми встановлює з'єднання з X сервером і виводить на екран вікно з привітанням:
/* Компілюється таким рядком: cc test.c -o test -lX11 */#include<X11/Xlib.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>externinterrno;intmain(void){Display*d;Windoww;XEvente;char*msg="Hello, World!";ints;/* З'єднатися з 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=DefaultScreen(d);/* Створити вікно */w=XCreateSimpleWindow(d,RootWindow(d,s),10,10,200,200,1,BlackPixel(d,s),WhitePixel(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);return0;}
Клієнт (програма) створює з'єднання з X сервером функцією XOpenDisplay, в яку передається вказівник на DISPLAY, визначений через змінну середовища виконання. У UNIX це можна зробити командою export DISPLAY = ".0:0". Як змінну DISPLAY можна вказати і віддалену машину з запущеним X сервером. Функція (макрос) DefaultScreen вибирає поточний екран (в X Window може бути декілька екранів), XCreateSimpleWindow створює вікно, а XSelectInput визначає події, на які вікно має реагувати. XMapWindow виводить вікно на екран, а XNextEvent вибирає з черги подію, яку вище було визначено. При подію Expose у вікні малюється прямокутник і виводиться рядок "Hello World!". При натисканні клавіші на клавіатурі програма завершує роботу.
Xlib створено для Unix-подібних операційних систем, тому інших платформ було створено власні реалізації: