X Window System - это оконная система применяемая в мире Unix. (Из-за большой лени я буду просто писать X, вместо X Window System ;). Главная идея в X что что экран, клавиатура и мышь управляются т.н. X сервером, в то время как задачи которые запускает пользователь должны соединяться с X сервером и просить его либо отрисовать окно, либо сообщить положение мыши и т.д. Такие хадачи называются X клиентами. Общение между X сервером и клиентами происходит по т.н. X протоколу с помощью socket'ов. Таким образом, я могу сидя у себя дома просматривать карту погоды рассчитываемую в реальном времени каким-нибудь Cray в Америке, который может вообще не иметь графического экрана. Все команды на отрисовку будут передаваться с Cray'я на мою станцию по TCP/IP и будут выполнены моим X сервером, реально отрисовывающим изображение на экране моего монитора. И наоборот - нажатие клавиши, или перемещение мыши создаст сообщение, которое будет передано X клиенту (то есть прикладной задаче).

Естественно, когда X сервер и X клиент работают на одной машине, то они используют разные ухищрения, например shared memory для ускорения работы.

И еще один важный момент - система X window - не имеет каких-либо спецификаций/соглашений по интерфейсу пользователя. Абсолютно никаких! Это бало сделано нарочно, в целях стандартизации. X сервер управляет только отображением/скрытием окон, отображением курсора мыши, обспечивает генерацию сообщений для клиентов о нажатии клавиш и/или перемещении мыши с все.

Для написания клиентов используется библиотека под названием Xlib (X libraray). Эта библиотека нижнего уровня реализующая интерфейс X протокола к языку C. Xlib является основой всех программ для X. Конечно, никто не ограничивает написание программ только языком C. X protocol является открытой впецификацией и имеются библиотеки подобные Xlib и для других языков, например fortran, pascal и даже java. Но они крайне редко используются.

Xlib

Xlib позволяет производить отрисовку в окнах примитовов типа линий, окружностей, текстовых строк, работу со шрифтами. Xlib не имеет примитивов для отрисовки кнопок или других элементов интерфейса. Этим занимаются так называемые toolkit'ы.

Спецификации ГИП

В Unix на все есть стандарты и на ГИП тоже. На данный момент имеются следующие стандарты:

Toolkits

Дальнейшим уровнем в X являются тулкиты. Тулкит это библиотека позволяющая создавать элементы ГИП (в едином стиле), а так же обеспечивает обратную связь с этими элементами. На данный момент, используются несколько тулкитов:

Desktops

Я не могу придумпть хороший и короткий перевод понятию Desktop, так что принимайте это как есть. Desktop это среда в которой работает простой пользователь. Desktop подразумевает наличие программ типа диспетчера файлов, текстового редактора, всяческих мулечек и фенечек, которые в принципе не нужны, но очень милы сердцу простого пользователя. ;-) Причем написанные в едином стиле, с использованием какого либо одного toolkit'а.

Лично мне абсолютно не нужны эти десктопы. Я использую какой либо диспетчер окон и виртуальными экранами. И несколько терминалов в которых и работают нужные мне программы.

Итак на данный момент имеются следующие Desktop'ы:

Выводы

Итак, давайте определимся с терминами



Eugene Bobin
$Id: intro.html,v 1.2 1998/11/16 01:39:53 gene Exp $