Библиотеки графического режима

Если библиотек, используемых в программах для консольного режима, не так много, они достаточно универсальны и легко поддаются учёту, то с библиотеками для обеспечения графического режима существенно сложнее.

Для начала, существует библиотека базовых графических функций, обеспечивающих работу оконной системы X (конкретно будем говорить о её реализации Xorg). До некоторого времени она носила имя xlib, ныне те же (и новые) функции собраны в заменившую её библиотеку libxcb (X protocol C-language Binding).

Простые программы, начинающиеся на x и входящие в штатный комплект данной реализации Xorg, по определению используют только одну из этих базовых библиотеки и, соответственно, могут работать под “голыми” Иксами. Это, кстати, иллюстрация традиции — давать приложениям, использующие определенные библиотеки, легко узнаваемые префиксы, о чём будет сказано ниже. В то же время с использованием только xlib или libxcb подчас собираются и довольно сложные программы.

Графические библиотеки более уровня предоставляют более широкие возможности по стандартизации интерфейса. Исторически среди первых из них, получившей широкое признание, была библиотека Motif. Однако долгое время она не распространялась свободно, а её открытая реализация openmotif отличалась функциональной неполнотой. Это ограничивало применение Motif-основанного свободного софта.

Ограничения, существовавшие для ранних версий Motif, в конце концов привели к развитию библиотек Qt и Gtk, наиболее широко используемых в настоящее время.

Для Gtk-приложений обычно используется префикс g (который путается с тем же самым префиксом, приписываемым программам, разработанным в рамках проекта GNU) и gtk. Программы для Qt безошибочно распознаются по префиксам q или qt. Последняя лежит в основе интегрированной среды KDE и некоторых самостоятельных приложений. Однако в этой книге о ней говориться почти не будет.

Библиотека Gtk (и её современная реализация Gtk2) написана на языке C. Однако существуют дополнительные библиотеки (опознаваемые по суффиксу mm, например, gnomemm, gnomeuimm), которые предоставляют возможность использовать и C++.

На библиотеке Gtk основана интегрированная среда GNOME, принятая в Fedora в качестве основной. Однако существует большое количество приложений,  использующих Gtk без GNOME -- их, наверное, больше, чем строго гномовских. С другой стороны, в этой среде  применяются и собственные, ещё более высокоуровневые, библиотеки вида gnome-libs и множество мелких дополнительных библиотек с весьма запутанными соотношениями.

Среды Xfce и LXDE, также претендующие на звание полноценного десктопа, в значительной мере также основаны на библиотеках Gtk. Правда, разработчики первой время от времени занимаются освобождением её от связи с Gtk, развивая собственную библиотеку xfce-lib. Однако и по сей день использующих её приложений не так много даже в составе “родной” среды.

Упомянем ещё такое понятие, как однородность среды. Чем меньше разных библиотек одновременно используется, тем меньше нагрузка на систему, включая дисковое пространство и использование памяти для работы. Поэтому выгоднее использовать приложения, построенные на одном и том же наборе библиотек. При этом они обычно гораздо лучше интегрируются и имеют схожий и единообразно настраиваемый интерфейс.

Тем не менее, излишний фанатизм здесь не уместен. Ресурсов типичных современных машин вполне достаточно для оперирования хоть всеми библиотеками, написанными человечеством со времён древневавилонской абаки. А разработчики всех интегрированных сред приложили немало усилий для придания единообразия и внешнему виду программ, написанных с использованием “чуждых” библиотек. Другое дело, что большинство пользовательских программ одного назначения, будь они написаны с использованием Gtk/gnome-libs или Qt/KDE, функционально почти идентичны, и выбор между ними — дело исключительно вкуса и привычки. Но об этом мы поговорим в Части III, когда будем выяснять вопрос, сколько же юзеру программ нужно…


Главная
Содержание

. .