Библиотеки для Иксов Введение для начинающих
выбор менеджера окон или интегрированной рабочей среды, как правило, оказывается сопряженным с выбором библиотек, на которых они основаны. Bolverk
🕛 29.09.2005, 02:32
От редактора: выбор менеджера окон или интегрированной рабочей среды, как правило, оказывается сопряженным с выбором библиотек, на которых они основаны. И поэтому в этом документе собраны краткие сведения о таких библиотеках. необходимые начинающему пользователю.Все программы используют определённые библиотеки, которые в том числе и загружаются в память при работе программы. Структура тут типа пирамидальной - библиотеки более высокого уровня используют библиотеки низших уровней. С приложениями бывает по-разному, как правило, приложения с большей функциональностью требуют библиотеки более высокого уровня и, соответственно, "простые" приложения можно написать на "низкоуровневых" библиотеках.
Посмотреть, какие библиотеки использует данное приложение, можно командой ldd. Обычно по названию библиотеки понятно, к чему оно относится, если нет - придется изучать базу данных установленных пакетов.
Базовой библиотекой любой нормальной юниксоидной системой является "общая библиотека языка C" - libc. В Linux как правило используется GNU-реализация - glibc, в BSD-системах - собственная библиотека libc.
Кроме того или иного варианта libc, консольные программы текстового режима могут использовать и некоторые другие библиотеки. Так, практически всегда используется терминальная библиотека ncurses, а также библиотека zlib.
Если говорить про графические, т.е. Иксовые, приложения, то базовыми для них является иксовые же библиотеки - xlib (размещающиеся в /usr/X11R6/lib/). Простые программы, типа twm, xclock и многие другие, начинающиеся на x и входящие в щтатный комплект данной реализации Иксов (например, xorg), по определению используют только Иксовые библиотеки и, соответственно, могут работать под "голыми" Иксами. Это, кстати, иллюстрация традиции - давать приложениям, использующие определенные библиотеки, характерные префиксы (см. ниже). В то же время с использованием только xlib можно собрать и довольно сложные программы, например, большинство оконных менеджеров box-семейства, и даже OpenOffice.org (хотя обычно привлеакаются и библиотеки более высокого уровня.
Графические библиотеки более высокого уровня - gtk, qt, другие: sdl (особенно ее любят писатели игрушек), fltk, motif, xforms, ну и прочие в том числе и экзотические библиотеки. Они предоставляют гораздо более широкие возможности по стандартизации интерфейса, например, и многое другое. Для gtk-приложений часто используется префикс g (который путается с префиксом, означающим GNU) и gtk, для qt - q или qt, который редко с чем путается. С другими библиотеками ситуация схожая.
Qt - библиотека, разработанная фирмой TrollTech. Существуют реализации этой библиотеки для различных операционных систем, что позволяет разработчикам писать кроссплатформенные приложения и облегчает перенос графического интерфейса приложения из одной операционной системы в другую. Библиотека Qt распространяется в двух вариантах: коммерческом (за немалые, между прочи, деньги) и бесплатном, под лицензией QPL, основанной на GPL. Последняя предполагает исключительно некоммерческое использование основанных на ней программ.
В библиотеке Qt используется концепция сигналов и приёмников (signal-slot), когда каждый виджет (widget - искуственно образованное слово от слов window и gadget) при действии с ним посылает сигналы, а виджеты, настроенные на обработку данного сигнала(приёмники) непосредственно обрабатывают данный сигнал.
Библиотека Gtk (и современная реализация ее - Gtk-2) написана на языке Си. Поэтому программирование для нее является намного более сложным делом, чем программирование для библиотеки Qt, написаной на Си++, и использующей классы и другие преимущества C++. Но существуют дополнительные библиотеки с суффиксом mm(gnomemm,gnomeuimm) которые предоставляют возможность писать на C++ для GNOME.
Менеджер окон (Window Manager) - приложение, осуществляющее контроль за положением и поведением окон, и не более того. Может быть написано с использованием самых разных библиотек. Обычно включает меню приложений, панель задач, несколько рабочих столов и т.п.
GNOME и KDE - Desktop Environments, т. е. рабочие среды, построенные соответственно на gtk и qt. С точки зрения программиста, это - библиотеки более высокого ровня, чем gtk и qt, предоставляющие ещё больше возможностей. Помимо WM, который, кстати, может быть разные внутри одного DE, они содержат прикладные программы, тесно интегрированные между собой. Эти прикладные программы построены уже не просто на библиотеках gtk и qt, а собственных библиотеках - libs-gnome и kdelibs (для GNOME и KDE). И в префиксах своих имен имеют - g и k, соответственно.
Упомянем еще такое понятие, как однородность среды. Чем меньше разных библиотек одновременно используется, тем меньше нагрузка на систему, включаю дисковое пространство, и использование памяти для работы. Поэтому выгоднее использовать приложения, построенные на одной и той же библиотеки. При этом они обычно гораздо лучше интегрируются, имеют схожий интерфейс. Настройки библиотеки влияют на вид всех приложений, использующих эту библиотеку. Есть еще themes и engines, позволяющие изменять внешний вид всех приложений, использующих эту библиотеку.
С gtk и qt еще такая штука: если приложений, использующих gtk без GNOME, наверное больше, чем гномовских, то чисто-qt приложений - не очень много. Большинство их тесно интегрированы с kde. Тем не менее, среди чисто Qt'шных приложений - такие популярные icq- и jabber-клиенты, как licq и psi. Как бы коммерческий браузер Opera также имеет своей базой библиотеку Qt.
Библиотеки Qt и Gtk могут выступать как альтерналитвы при построении интефейсов сложных программных комплексов. Выше упоминалось, что OOo может быть собран с использованием только базовых Иксовых библиотек (и такие сборки существовали, например, первый русский OOo от Altlinux). Однако чаще он линкуется с библиотечными функциями Gtk. Меньшее распространение получили KDE-варианты сборки OOo. Однако ныне равноправный выбор между использованием Gtk и KDE станет (начиная со сборки 18 2-й версии) штатной особенностью этого офисного пакета.
XFCE также претендует на звание полноценного DE, и его разработчики сейчас занимаются освобождением этой среды от связи с gtk.