Возможности X-протокола позволяют прорисовывать лишь простейшие графиче-ские примитивы, как то: линии, точки, прямоугольники, дуги, полигоны, растровые изображения и текст — при помощи растровых или векторных шрифтов, поддерживаемых X-сервером.
Все интерфейсные элементы управления приложениями, такие как кнопки, полосы прокрутки, закладки, меню, списки и пр. должны быть самостоятельно составлены X-клиентами из простейших примитивов. Для решения этой задачи Х-клиенты используют специальные библиотеки интерфейсных элементов (виджетов, widget), такие как W:[Xaw], Xview, W:[Motif], W:[Tk], W:[Qt), W:[Gtk] и др.
Самими «простыми» (доставшимися в наследство от UNIX) библиотеками виджетов являются библиотеки Xaw и Motif, разработанные на основе базовой Xt, W :[X Toolkit Intrinsics], а так же «альтернативная»XView.
Более «современным» видом виджетов обладают наиболее распространенные на сегодняшний день библиотеки Qt и Gtk, на основе которых разрабатываются пользовательские среды KDE и GNOME.
В примере из листинга ниже иллюстрируется использование различных X-библиотек, среди которых библиотека самого X-протокола О W:[Xlib], библиотеки виджетов Xt и Xaw © и библиотеки расширений X-протокола, например W:[XRender].
Содержимое
Библиотеки Xlib, Xt и Xaw
homer@ubuntu: ldd $(which xeyes) | grep -1 libX
libXext.so.6 => /usr/lib/i386-llnux-gnu/libXext.so.6 (0xb7781000)
libXmu.so.6 => /usr/lib/1386-linux-gnu/libXmu.so.6 (0xb7768000)
libXt.so.6 => /usr/lib/1386-linux-gnu/libXt.so.6 (0xb770b000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libXll.so.6 (0xb75d7000)
libXrender.so.l => /usr/lib/1386-linux-gnu/libXrender.so.1 (0xb75cd000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb73a2000)
libXdmcp.so.6 => /usr/lib/t386-linux-gnu/libXdrocp.so.6 (0xb739b000)
homer@ubuntu:~$ ldd $(which xcalc) | grep -1 Хаw
libXaw.so.7 => /usr/lib/i386-linux-gnu/libXaw.so.7 (0xb76fb000)
Аналогично, в листинге ниже показаны X-клиенты, использующие библиотеки виджетов XView и Motif, а в листинге еще ниже — клиенты, использующие Tk, Gtk и Qt.
Библиотеки декорирования XView и Motif
homer@ubuntu:~$ ldd $(which clock) | grep -i libXView
libxview.so.3 .=> /usr/lib/libxview.so.3 (0xb7595000)
homer@ubuntu:~$ ldd $(which mwm) | grep -i libXm
libXm.so.4 => /usr/lib/i386-linux-gnu/libXm.so.4 (0xb7458000)
libXmu.so.6 => /usr/lib/1386-linux-gnu/libXmu.so.6 (0xb70f2000)
Библиотеки декорирования Tk, Gtk и Qt
homer@ubuntu:~$ ldd $(which wish) | grep -i LibTk
libtk8.5.so.0 => /usr/lib/libtk8.5.so.0 (0xb7620000)
homer@ubuntu:~$ ldd $(which nautilus) | grep -i libGtk
libgtk-3.so.0 => /usr/lib/i386-linux-gnu/libgtk-3.so.0 (0xb70fl000)
homer@ubuntu:~$ ldd $(which kcalc) | grep -i libQtGui
libQtGui.so.4 => /usr/lib/1386-linux-gnu/libQtGui.so.4 (0xb5fec000)