Загрузки системы. В процессе загрузки будет запущена основная управляющая программа ядро



страница14/16
Дата22.11.2016
Размер6.23 Mb.
Просмотров828
Скачиваний0
1   ...   8   9   10   11   12   13   14   15   16

Пример 1. Запуск X-клиента из виртуальной консоли
В результате этих действий изменился экран X-сервера: в левом верхнем углу открылось окно калькулятора — xcalc. Произошло следующее: при запуске xcalc проверил значение переменной DISPLAY и направил X-запрос по указанному там адресу; по запросу от X-клиента (xcalc) X-сервер выделил ему окно и выполнил необходимые операции графического вывода, чтобы отрисовать содержимое окна (опять же, по запросам xcalc). Теперь при помощи мыши и клавиатуры, переместив точку ввода на это окно, вполне можно что-нибудь вычислить, однако ни переместить окно, ни изменить его размер, ни свернуть — те операции, к которым так привыкли пользователи оконного интерфейса — сам X-сервер не выполняет, для этих операций требуется специальная программа — диспетчер окон, о которой речь пойдёт ниже.


Иллюстрация 4. Запуск X-клиента

С помощью специальных X-запросов можно изменить вид и поведение самого X-сервера из той же командной оболочки, в которой установлена переменная окружения DISPLAY. Например, команда “xsetroot -solid green &” изменит цвет фона на экране сервера на зелёный.

Итак, X-сервер запускается на одном компьютере, а X-клиенты вполне могут работать на других (причём на нескольких!), посылая ему запросы. С точки зрения человека, сидящего за (обратите внимание!) X-сервером, каждый такой клиент представлен в виде окна. Требования к аппаратуре на машинах, запускающих X- клиенты, будут изрядно отличаться от требований к аппаратуре машины для X- сервера. Типичная машина с X-сервером — это рабочее место (workstation). Она должна быть оборудована качественными устройствами ввода-вывода — монитором, видеокартой, клавиатурой и мышью. Что же касается её вычислительных способностей, то их должно быть достаточно для выполнения X-запросов, и только. Такой компьютер не обязан работать под управлением Linux, на нём даже может вообще не быть операционной системы! В восьмидесятые годы выпускались подобные устройства, называемые «X-терминал» (X terminal).
X-клиент

Программа, осуществляющая ввод и вывод графических данных при помощи X-запросов, обрабатываемых X-сервером.


В отличие от машины с X-сервером, компьютер для запуска X-клиентов может совсем не иметь устройств графического ввода-вывода. Его задача в том, чтобы все X-программы и запустившие их пользователи не мешали друг другу работать. На такой машине нужна хорошо настроенная операционная среда, с достаточным для запуска многих процессов быстродействием и объёмом оперативной памяти. Пара X11–Linux весьма неплохо работает на т. н. бездисковых комплексах. Рабочие станции в таких комплексах — самые настоящие X-терминалы, они не имеют жёстких дисков. Вся работа происходит на центральном компьютере, с которого на рабочую станцию загружается по сети урезанный вариант системы, достаточный для запуска X-сервера, и сам X-сервер. В таких комплексах администрировать нужно одну только центральную машину, они надёжнее компьютерных залов и, что немаловажно, стоят дешевле, причём в качестве X-терминалов можно использовать и довольно маломощные, пожилые компьютеры.

Виртуальный сервер

Одно из многих достоинств X-протокола — в том, что X-сервером может служить любая программа, исполняющая X-запросы, а работает ли она на самом деле с каким-нибудь графическим устройством или только притворяется — неважно. Протоколом X11 пользуется сервер печати Xprt, который выводит на принтер все X-запросы или Xvnc — X-сервер, управлять которым по специальному протоколу можно с нескольких машин. С помощью Xvnc (другой вариант названия — vncserver) можно устраивать показ работы какого-нибудь X-клиента по сети. При этом все пользователи одновременно смогут запустить VNC-клиент (vncviewer) и гонять по экрану один и тот же указатель мыши (что, конечно, можно и запретить).

Виртуальный X-сервер может вообще никаких действий не выполнять, а только передавать X-запросы куда-нибудь дальше, например, «настоящему» X-серверу. Так поступает демон Secure Shell, sshd (программа терминального доступа, о которой шла речь в лекции Сетевые и серверные возможности), переправляя X-запросы X-серверу в зашифрованном виде. Этим свойством sshd можно воспользоваться, если сообщение по X-протоколу между двумя компьютерами невозможно (запрещено межсетевым экраном), или вы считаете такое соединение небезопасным.

methody@sakura:~ ssh methody@fuji

methody@fuji's password:

Last login: Sat Dec 25 13:26:40 2004 from localhost

methody@fuji:~ $ xcalc

Error: Can't open display:

methody@fuji:~ $ export DISPLAY=sakura:0

methody@fuji:~ $ xcalc

Error: Can't open display: sakura:0

methody@fuji:~ $ logout

Connection to fuji closed.

methody@sakura:~ ssh -X methody@fuji

methody@fuji's password:

Last login: Sun Dec 26 11:13:08 2004 from sakura.nipponman.ru

methody@fuji:~ $ echo $DISPLAY

localhost:10.0

methody@fuji:~ $ xcalc

# работает :) !


Пример 2. Виртуальный X-сервер ssh
Допустим, Мефодий хочет запустить X-клиент (например, xcalc) на другой машине в локальной сети — fuji, где у него есть учётная запись (тоже methody). После всех операций, проделанных в примере, на экране X-сервера на локальной машине Мефодия (за которой он сидит), появится ещё одно окно xcalc, при этом этот xcalc в действительности запущен на машине fuji и все вычислительные операции выполняются именно там.

Демон SSH заводит виртуальный X-сервер на удалённой машине, причём номер_сервера обычно заводится таким, чтобы не пересекаться с X-серверами, которые могут быть запущены на этой машине (в примере номер_сервера равен 10). Виртуальный sshd-X сервер принимает все X-запросы с того же компьютера и передаёт их — в зашифрованном виде — на компьютер, где запущен ssh и невиртуальный X-сервер. Здесь все X-запросы вынимаются из SSH-«водопровода» и передаются местному серверу, как если бы они исходили от местного X-клиента (так оно и сеть: этот клиент — ssh).

XFree86 и X.Org

Наиболее распространённая версия реализации X11R6 до начала 2000-х годов называлась XFree86. Эта графическая подсистема изначально проектировалась как реализация X11R5 для машин архитектуры i386 — самых распространённых на сегодня персональных компьютеров. Главная особенность этой архитектуры — бесчисленное многообразие устройств графического вывода (т. н. видеокарт) и непрестанное нарушение их разработчиками всех мыслимых стандартов. Поэтому главной задачей создателей XFree86 было устроить гибкую структуру компоновки и настройки X-сервера в соответствии с подвернувшимся под руку устройством графического вывода, а заодно и ввода, потому что клавиатур, мышей и заменяющих их устройств на свете тоже немало. Сегодня XFree86 существует для многих архитектур и многих операционных систем.

В последние годы параллельно с XFree86 развивается основанная на тех же исходных текстах X Window System графическая подсистема X.Org. Поначалу по спектру поддерживаемого оборудования, архитектур и функциональности X.Org мало чем отличалась от XFree86, однако направления развития этих двух проектов, состав их разработчиков и лицензионная политика несхожи. Сегодня X.Org представляется более перспективной разработкой, чем XFree86.

Конфигурация X-сервера

Чтобы приспособить графическую подсистему (в любой реализации) к имеющемуся оборудованию, требуется организовать соответствующий профиль. Профиль графической подсистемы находится в каталоге /etc/X11, основной конфигурационный файл X.Org называется xorg.conf, именно его считывает при запуске X-сервер. Конфигурационный файл XFree86 называется XF86Config (или XF86Config-4).

Мы рассмотрим конфигурацию графической подсистемы на примере X.Org. Файл xorg.conf структурирован: состоит из нескольких обязательных разделов, которые могут следовать в любом порядке. В раздел объединяется часть профиля, связанная с одной из сторон деятельности X-сервера. Каждый раздел имеет такую структуру:


Section "НазваниеРаздела"

КлючевоеСлово "Параметры"

. . .


EndSection
Пример 3. Структура раздела xorg.conf
Внутри раздела содержатся записи, каждая из которых занимает обычно одну строку и задаёт значение для одного из параметров профиля X.Org. В начале записи стоит КлючевоеСлово, за которым следуют Параметры, количество и формат которых зависит от ключевого слова. Ниже приводится список обязательных разделов с краткими аннотациями, для чего они служат.

Files Пути к файлам с ресурсами, необходимыми X-серверу

ServerFlags Общие параметры X-сервера

Module Расширения, которые следует загрузить

InputDevice Описание устройств ввода

Device Описание устройства вывода (видеокарты)

Monitor Описание монитора

Modes Описание видеорежимов

Screen Описание экрана (связывает монитор и видеокарту)

ServerLayout Конфигурация сервера


Пример 4. Разделы xorg.conf
Почти каждый из перечисленных разделов может присутствовать в конфигурационном файле в нескольких экземплярах, например, может быть несколько разделов (InputDevice), описывающих разные устройства ввода (разные мыши и клавиатуры). Однако эти разделы не равноправны, а образуют иерархическую структуру, самым главным (корневым) элементом которой является конфигурация сервера (ServerLayout). В этом разделе указывается, какие именно из описанных в файле устройств ввода (разделы InputDevice, как минимум два — для клавиатуры и мыши) и вывода (Screen, который связывает в единое устройство вывода монитор и видеокарту, ссылаясь на их описания в соответствующих разделах) будут использованы при работе X-сервера. В каждом разделе присутствует строка «Identifier “идентификатор”», именно эта строка используется для выбора нужного из однотипных устройств в разделе “ServerLayout”. Например, на машине, где работает Мефодий, общая конфигурация сервера выглядит так:

Section "ServerLayout"

Identifier "layout1"

Screen "screen1"

InputDevice "Mouse1" "CorePointer"

InputDevice "Keyboard1" "CoreKeyboard"

EndSection
Пример 5. Раздел ServerLayout конфигурационного файла xorg.conf
Соответственно, при запуске сервера будут использованы тот раздел Screen, в котором содержится запись «Identifier “screen1”», мышь “Mouse1” и клавиатура “Keyboard1”.

Чтобы разобраться в подробностях каждого раздела, требуются определённые познания в работе и характеристиках устройств ввода и вывода, поэтому здесь мы не будем приводить конкретных примеров. Подробно о формате xorg.conf можно прочитать в соответствующем руководстве xorg.conf(5). Для многих пользователей будет достаточно профиля графической подсистемы, созданного одним из существующих мастеров, включаемых разработчиками дистрибутивов Linux в процедуру установки системы. С их помощью можно создать более или менее подходящий профиль, не вникая в тонкости, нередко — непосредственно при установке системы. Во всяком случае, у пользователя всегда остаётся возможность корректировать профиль вручную, отредактировав конфигурационный файл. Простой конфигурационный файл можно получить, запустив X-сервер с ключом -configure с правами суперпользователя. При этом в текущем каталоге создастся файл xorg.conf.new, в котором X-сервер сохранит результаты автоматического определения внешних устройств.

Модули и расширения

Требование гибкости привело к тому, что в реализации XFree86 и X.Org графическая подсистема стала совсем уже похожа на операционную систему. Сам X-сервер играет роль ядра. Запускаясь, сервер подгружает драйверы — специальные компоненты, работающие с выбранной видеокартой, и модули — компоненты, расширяющие функциональные возможности сервера (в конфигурационном файле xorg.conf необходимые модули перечисляются в разделе Modules). Есть весьма нужные расширения, вроде glx (высокоуровневые функции трёхмерной графики) или freetype (поддержка шрифтов TrueType), а есть экзотические, которые иногда могут понадобиться, например, RECORD, позволяющее записывать, а после — «проигрывать» все происходящие с сервером события.



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

X-приложения

Программный продукт, использующий X11, называется приложением (application, другое значение — «применение»). Если считать, что сами графические возможности уже реализованы X-сервером и библиотеками, то программа и на самом деле окажется приложением к системе, и вся её заслуга будет состоять в том, что она применила эти возможности для решения своей задачи.

Эмулятор терминала

С графикой или без, основным интерфейсом управления Linux была и остаётся командная строка. X11, предлагая иной способ взаимодействия с компьютером, не должна лишать пользователя возможности работать с самой системой испытанным и эффективным методом — через терминал. Поэтому первое совершенно необходимое X-приложение должно предоставлять возможность доступа к терминалу в X Window System.

Задача дать пользователю X11 командную строку решается довольно легко. Нужно завести X-приложение, окно которого работает аналогично окну терминала: передаёт символьную информацию от пользователя системе и обратно. Делается это уже описанным в лекции Работа с внешними устройствами механизмом псевдотерминалов tty/pty (или pts/ptmx): X-приложение получает во владение специальное устройство типа pty, связанное по вводу и выводу с терминальным устройством типа tty, с которым работает shell. Общее название таким программам — эмулятор терминала для X11 (xterm). Мефодий может запустить xterm всё из той же виртуальной консоли, в которой определено значение переменной окружения DISPLAY и получить доступ к командной строке уже из графической оболочки.


Иллюстрация 5. Эмулятор терминала для X11 — xterm

В левом верхнем углу открылось окно xterm, которое легло «поверх» открытого ранее xcalc. В открывшемся окне xterm Мефодий увидел привычное приглашение командной строки bash: теперь из этой командной строки можно выполнять любые команды, в том числе и запускать новые X-приложения, например, ещё один xterm. Чтобы при этом избежать наложения окон друг на друга, можно запустить xterm с параметром “-geometry +150+150”, что заставить X-сервер выдать ему окно, верхний левый угол которого отстоит на 150 экранных точек (пикселей) от левой границы экрана, и на 150 же — от левой. В этом xterm значение DISPLAY унаследовано от родительского процесса и равно “:0”, так что окна всех запущенных из него X-приложений откроются на этом же экране.

Не следует путать программу xterm со способом организации рабочей станции (т. н. «X-терминал»): термины эти созвучны, но относятся к разным областям знаний. Нередко бывает, что на экране X-терминала (компьютера) есть окно терминала X11 (программы xterm). XTerm передаёт сигналы как настоящий терминал, имеет богатый набор управляющих последовательностей (унаследованный от устройства «DEC VT102/VT220»), а вдобавок позволяет воспользоваться всеми преимуществами графической среды: выбрать шрифт, запомнить текст на экране (даже тот, что уже исчез с экрана) и многое другое.

Кстати сказать, копирование текста при помощи мыши — свойство совсем не только XTerm. На самом деле любое окно, зарегистрированное в X11 как текстовое, позволяет отметить (при постоянно нажатой первой кнопке или последовательными нажатиями третьей) часть текста. Выделенный текст можно немедленно вставить в любое окно текстового ввода нажатием второй (обычно — средней) кнопки. Различают временное хранилище (т. н. cut buffer), содержимое которого обновляется всякий раз, когда пользователь выделяет текст, и буфер обмена (т. н. clipboard), содержимое которого заполняется, если пользователь вызвал соответствующую команду (например, выбрал пункт меню “Copy”). Cut buffer — удобное средства копирования в два движения (выделить в одном месте, нажать среднюю кнопку в другом). Clipboard — более традиционный, но более трудоёмкий инструмент (выделить, скопировать, выделить вставить).

Сеанс работы с X11

Как догадался Мефодий, команда startx делает несколько больше, чем просто запуск X-сервера, она кроме того запускает несколько X-приложений. Для удобной работы в X11 пользователю прямо при запуске графической подсистемы потребуется сразу несколько приложений. Во-первых, нужно запустить приложение, которое позволит управлять окнами (как минимум перемещать их), чего не делает сам X-сервер, такие приложения называются диспетчеры окон и будут обсуждаться немного позднее. Кроме того, полезно сразу запустить разные мелкие программки, вроде индикатора загрузки системы xload или экранных часов xclock. Сам X-сервер не мешает настроить с помощью xset (можно поменять курсор, звуковой сигнал, переименовать кнопки мыши). Одним словом, пользователю, как правило, нужен небольшой стартовый сценарий, который запускался бы вместе с X-сервером.

С другой стороны, сервер хорошо бы останавливать, когда он больше не используется. Это, конечно, относится к схеме без диспетчера экрана (xdm): пользователь работает с терминала, потом запускает X-сервер для выполнения графических программ, выполняет их и останавливает сервер, чтобы графическим устройством мог воспользоваться кто-нибудь другой. Стандартный способ аварийного завершения работы X.Org (Ctrl + Alt + Backspace), во-первых, доступен только на X.Org, во-вторых, его можно отключить, а в-третьих, все запущенные приложения получат в этом случае сообщение о внезапной смерти сервера и тоже завершатся аварийно.

Если запускать не сам X-сервер, а некоторую оболочку вокруг него, называемую startx, то алгоритм работы будет такой. Сначала запустится X-сервер и сформируется значение переменной окружения DISPLAY. Затем запустится сценарий .xinitrc, находящийся в домашнем каталоге пользователя, а если такого нет — системный стартовый сценарий /etc/X11/xinit/xinitrc. Предполагается, что X-сервер будет работать до тех пор, пока выполняется .xinitrc. Когда все команды из .xinitrc отработают, его выполнение завершится, а вместе с ним завершится и сервер. Поэтому рекомендуется все X-приложения из .xinitrc, кроме последнего, запускать в фоне, чтобы командный интерпретатор не дожидался окончания их работы. В этом случае с завершением последнего приложения из .xinitrc завершится и сам X-сервер. Последней программой в стартовом сценарии может быть xterm, как это сделано в стандартном xinitrc, или диспетчер окон. Для завершения xterm (а с ним и всего сеанса работы X11) достаточно послать “^D” запущенному в нём shell, а окновод обычно имеет какую- нибудь кнопочку или менюшку «Exit». Программа, с завершением которой завершается сеанс X11, называется лидером сеанса (session leader).

Лидер сеанса может быть указан и в качестве параметра startx в командной строке, например, по команде startx /usr/bin/xterm будет открыт сеанс X11, лидером которого будет xterm, его окно откроется при запуске на экране X-сервера.

Диспетчер экрана организует сеанс работы с X11 сходным образом. Единственное отличие — в том, что ко времени запуска startx вручную пользователь уже имеет настроенное окружение (этим занимается стартовый командный интерпретатор), а после регистрации в диспетчере экрана — нет. Поэтому стартовый сценарий нужно запускать другой — .xsession. На самом деле и сам X-сервер необходимо перезапускать и при использовании xdm. Несмотря на то, что пользователи взаимодействуют только с X-сервером, не используя виртуальные консоли, было бы неудобно и небезопасно сохранять какие бы то ни было настройки, сделанные одним пользователем ко времени работы другого. Самое неприятное — это т. н. «клавиатурный вор» (keyboard grabber), программа, притворяющаяся окноводом — для того лишь, чтобы запоминать всё, что пользователь ввёл с клавиатуры (злоумышленников интересуют, как правило, пароли).

Нарушения безопасности легко избежать, если не использовать xhost (авторизацию на основе адреса) и не доверять X-серверу, запущенному не при вас. Можно доверять автоматически запускаемой в сеансе программе xauth, которая связывается с X-сервером и записывает в файл ~/.Xauthority специальный ключ доступа. Все X-приложения пользуются библиотекой libX11, которая обязательно обращается к этому файлу. Таким образом, X-приложение может воспользоваться X-сервером, если оно знает его адрес (указанный в переменной окружения DISPLAY или переданный ключом -display) и авторизовано сервером (по адресу компьютера или по ключу доступа в ~/.Xauthority).

Ресурсы X11

X-приложения создаются с помощью разнообразных готовых инструментариев. Большая их часть разрабатывается независимыми авторами по всему миру (это общее свойство свободного ПО, см. Политика свободного лицензирования. История Linux: от ядра к дистрибутивам), но библиотека самого низкого уровня, «X Lib», и несколько более высокоуровневых с давних пор включаются в основной дистрибутив X11. Из них наиболее примечательна «X Toolkit» (Xt), организующая из стандартных окон X11 оконные примитивы (widgets).

Дело в том, что каждый объект X11 обладает некоторым набором свойств, вроде размера окна, цвета фона или текстового содержимого. Для удобства доступа примитивы Xt, реализованные поверх объектов Xlib, имеют собственные имена (у каждого объекта своё) и фамилии (одинаковые у всех объектов одного класса). Более того, программа, написанная на Xt, имеет карту объектов, в которой указано, какой объект внутри какого находится, и приведены имена объектов и их классов. Посмотреть структуру запущенного X-приложения можно с помощью программы editres (“Commands/Get Tree”). Например, программа xlogo состоит из трёх примитивов: xlogo (класс XLogo) и вложенными в него xlogo.xlogo (класс Logo) и shellext (неоконный, класс VendorShellExt). Мало того, свойства этих примитивов можно подменить прямо в работающей программе. Можно, например, на время работы перекрасить фон xlogo в красный цвет.

Xlib, со своей стороны, предоставляет универсальный способ хранить такие настройки в файле. Многие приложения хранят свои настройки по умолчанию в /etc/X11/app-defaults/ИмяКласса (в некоторых системах этот каталог перенесён, как ему и подобает, в /etc/X11). ИмяКласса — это имя класса самого главного окна этого приложения. Пользователь может дополнить настройки ресурсов, которые сервер накапливает при старте, при помощи команды xrdb -merge файл_настроек или переписать их заново (ключ “-load”). Приложению остаётся только вызвать специальную функцию Xlib, которая считывает настройку с определённым именем из таблиц сервера. Если xrdb не запускалась ни разу (в том числе и в стартовом сценарии), запрос приложения направится не в таблицу сервера, а непосредственно в файл ресурсов .Xdefaults5, лежащий в домашнем каталоге. В этом случае для изменения настроек не надо запускать xrdb.

Xt добавляет в эту процедуру иерархию ресурсов. Как это можно наблюдать в editres, при задании свойства ресурса используются четыре конструкции: имя ресурса, имя класса, разделитель “.”, означающий, что один ресурс вложен в другой непосредственно, и разделитель “*”, означающий, что ресурс вложен в другой в конце концов (возможно, по цепочке). Например, для задания цвета фона в программе xload можно использовать именование xload.paned.load.background (это всё по именам). Можно попробовать единым махом изменить цвет фона всех примитивов этой программы, записав в .Xdefaults (или передав xrdb) строку вида “XLoad*background: midnightblue”.

Если в .Xdefaults есть несколько строк, удовлетворяющих имени ресурса, то имена собственные имеют преимущество над классами, а “.” — над “*”. Так что запись вида “*Text*background: peachpuff” повлияет только на те примитивы класса Text и вложенные в них, для которых нет более строгого указания (например, “*Text.background” или “XConsole*Text*background”). Обратите внимание, как поэтично называются порой цвета в X11! Посмотреть таблицу цветов можно командой xlscolors.

К сожалению, Xt — всё-таки довольно старая библиотека, не во всём следующая новым веяниям в области графического интерфейса. Для быстрой разработки оконных программ нужны разнообразные и мощные инструменты, которые манипулируют понятиями, далеко ушедшими от стандартного «окно–меню–кнопка». Если такие инструментарии написаны с применением Xt (например Xm, «open Motif», Xaw, «Athena Widget»), их настройки можно поселить в .Xdefaults. Незадача ещё и в том, что структуру классов Xt неудобно использовать при программировании на языке C++, а именно на нём сейчас пишется большинство оконных приложений. Так что самые мощные инструментарии для X11 — Qt («The Q Toolkit») и GTK («The GIMP toolkit») — не используют App-defaults.

Диспетчер окон

Задача диспетчера окон

X-сервер берёт на себя ответственность только за выдачу X-приложению области для ввода-вывода и управление фокусом — окна, но не занимается никакими манипуляциями по изменению этого окна: перемещением, изменением размера, сворачиванием и т. п. Мефодий уже наблюдал X-сервер, к которому присоединено ровно два клиента, чьи окна перекрываются: два чёрно-белых окна друг на друге, и их ни растащить по углам, ни сжать нельзя. X-сервер умеет очень ловко манипулировать окошками, но сам никогда ничего не делает, дожидается команды от пользовательской программы. А какой программе захочется самостоятельно отслеживать перекрытие окон, фокус, заниматься изменением размера, перемещением и тому подобным? Ведь основная задача программы может быть совсем другой...

Ответ очевиден: этим должна заниматься программа, основная задача которой состоит в том, чтобы отслеживать перекрытие, изменять размер, двигать, превращать в иконку и так далее. По совместительству эта же программа будет рисовать при окнах всякие красивости: рамочки, заголовки, кнопки и меню управления — словом, делать всё, что нужно для организации логики управления окнами. Для этого придётся также обрабатывать практически все события, передаваемые от устройств ввода, и многочисленные «подсказки» от приложений относительно того, какими они хотят видеть собственные окна. Это X-приложение называется диспетчером окон (window manager)6.



Поделитесь с Вашими друзьями:
1   ...   8   9   10   11   12   13   14   15   16


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал