Xlib | это... Что такое Xlib? (original) (raw)

Xlib (X library, рус. библиотека «икс») — библиотека функций клиента системы X Window, написанная на языке Си.

Содержит функции для взаимодействия с т. н. X-сервером. Библиотека позволяет использовать более высокий уровень абстракции, без знания деталей работы основного протокола системы X Window.

Некоторые пользовательские приложения используют Xlib напрямую (например, Opera), другие используют специальные инструментарии «виджетов» - «надстройки» над базовой библиотекой Xlib.

Xlib и другие библиотеки её использующие

Библиотека Xlib появилась около 1985 года и на настоящее время используется как основа и как основной графический интерфейс пользователя во многих Юникс-подобных операционных системах.

Библиотека XCB - попытка разработки замены Xlib.

Функции XLib

Функции XLib могут быть сгруппированы в несколько категорий:

  1. Операции управления соединением с X сервером, такие как XOpenDisplay, XCloseDisplay
  2. Запросы X серверу, такие как XCreateWindow, XCreateSimpleWindow, XCreateGC, XCreateColomap
  3. Операции клиентской части, такие как управления событиями: 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; 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 = 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);

return 0; }

Клиент (программа) создает соединение с X сервером функцией XOpenDisplay, в которую передается указатель на DISPLAY, определенный через переменную среды исполнения. В UNIX это можно сделать командой export DISPLAY=".0:0". В качестве переменной DISPLAY можно указать и удаленную машину с запущенным X сервером. Функция (макрос) DefaultScreen выбирает текущий экран (в X Window может быть несколько экранов), XCreateSimpleWindow создает окно, а XSelectInput определяет события, на которые окно должно реагировать. XMapWindow выводит окно на экран, а XNextEvent выбирает из очереди событие, которое выше было определено. При событии Expose в окне рисуется прямоугольник и выводится строка "Hello World!". При нажатии клавиши на клавиатуре программа завершает работу.

Ссылки

Просмотр этого шаблона X Window System
Архитектура Основной протоколXlib • Выделение • Менеджер сессий • XDM • Инструментарий • Авторизация • Встроенные средства • Список цветов
Менеджеры окон Композитный • Репарентинг • Тайлинг
Расширения Графическое • Клавиатурное • Общей памятиX video • Контурное • GLX • XRender
Реализации X11.appX.Org Server • X-Win32 • XFree86 • XDarwin • XmingXsun
Стандарты ICCCMfreedesktop.org
Приложения X-терминал
Просмотр этого шаблона Инструменты разработки элементов графического интерфейса
Низко-уровневые Macintosh Toolbox/CarbonWindows API • Intrinsics • Intuition • Xlib
Высоко-уровневые Amiga OS BOOPSI • Magic User Interface • Zune • ReAction GUI Mac OS и Mac OS X Cocoa • MacApp • MacZoop • PowerPlant Microsoft Windows Microsoft Foundation ClassesWindows Template Library • SmartWin++ • Object Windows LibraryVisual Component LibraryWindows FormsWindows Presentation Foundation UNIX, под X XawMotifLessTif • InterViews Кросс-платфор-менные На основе Flash ASWing • Adobe FlexGnash • SWF2EXE Software На основе XML,AJAX или SVG Ample SDK • CougarXML • Dojo Toolkit • Echo • ExtJSGladeXMLGoogle Web ToolkitjQuery • Lively Kernel • MooTools • Pyjamas • qooxdoo • Rialto Toolkit • script.aculo.us • XML User Interface • XULYahoo! UI Library На основе Java Abstract Window ToolkitSwingStandard Widget ToolkitQt Jambi На основеC или C++ Agar • CEGUI • Component Library for Cross Platform • dlib C++ Library • FLTKFOX toolkit • OpenGL User Interface Library • GTK+IUPJuce • JX Application Framework • Qt • TnFOX • Visual Component Framework • wxWidgets • YAAF • XForms • XVT • Ultimate++ На основе Common Lisp CAPI • Common Graphics • CLIM • McCLIM • Garnet На основе Pascal IP Pascal • LazarusfpGUIFireMonkey На основе Python Pyjamas • PyQtPyGTK • PyGUI • wxPython • PySideTkinter На основе Objective C GNUstep На основе других Tk