Чем огранизуется рабочее пространство в XOrg?
Метафора «рабочего стола»
Снова подход от задачи
- Основная идея: несколько информационно независимых областей на экране
 - Следствия: 
- управление этими областями (группировка, модификация, порождение и т. п.)
 - ограничение контекста («несколько» может означать «много»)
 - типизация областей (например, выделить постоянно примутствующие в определённом месте экрана для мониторинга и/или уведомлений)
 
 - Представление инструментария ОС и рабочей среды 
- Быстрый доступ  
- К пограммам (инструментам)
 - К ресурсам и рабочим объектам
 
 - Рубрикация длинных инструментальных и объектных списков
 
 - Быстрый доступ  
 - «Эстетические» соображения (должно быть «красиво»)
 - Эмулятор терминала (чтобы не лишаться командной строки)
 
«Эстетика» — понятие глубоко субъективное; «удобство» (понимаемое как «быстрота+качество») — глубоко динамическое, зависящее от профиля задач.
Следствие: не существует «идеально удобного» рабочего стола, возможен только
- статистический подход (80% пользователей смогут удобно решать 80% своих задач).
 - ручной подход (каждый сам строит рабочий стол)
 
Архитектура X11
X11 — это название протокола: X-клиент обменивается сообщениями с X-сервером. X11R6 — это 6-я версия протокола, в XOrg используется уже 7-я. Общее название таких клиент-серверных комплексов — the X Window System. XOrg — одлна из реализаций X11 (другая, исторически более ранняя, — XFree86).
X-сервер взаимодействует с устройством вывода (видеокартой): исполняет пришедшие от X-клиента запросы вида «нарисовать», «вывести текст» и т. п., а также взаимодействует с устройствами ввода (клавиытура, мышь, ...), посылая X-клиенту события. X-сервер запускается на машине, за кототрой сидит пользователь. X-клиент посылает X-серверу команды и обрабатывает пришедшие события. X-клиент — это ползовательская программа, запускаемая где угодно.
Адрес сервера (DISPLAY): адрес_компьютера:номер_сервера.номер_экрана.
Адрес может быть не только IP, но и DECNet или строчкой «unix» (подключение чере unix domain socket). Пустой адрес — адрес и протокол по умолчанию.
- Номер сервера регстрируется за каждой программой X-сервером. Например, Если две видеокарты. Или если требуется не прекращая сеанса работы пользователя зайти на той же машине в графическую среду под другим пользователем. Или виртуальный сервер (который не рпаботает с видеокартой), например, VNC или sshd.
 - Номер экрана — для «многоголовых» видеокарт.
 
Хранится в переменной окружения DISPLAY или задаётся ключом -display. Обычное значение — :0.0, адрес по умолчанию, нулевой сервер, нулевой экран.
Способы идентификации клиента:
xhost — IP-based, небезопасная: любой пользователь может подключиться с авторизованного компьютера.
xauth — по ключу, который вырабатывается сервером: если клиент и сервер запускаются с одной машины, используется общий файл ~/.Xauthority, если с разных — ключ надо защищённым способом передать. Традиционный ключ MIT-MAGIC-COOKIE-1 считается не вполне стойким.
Окна
Есть ли модели графического интерфейса, не похожие на оконный?
Окно — прямоугольная область, внутри которой выполняются клиентские графические команды. Каждое окно зарегистрировано за каким-нибудь X-клиентом. У клиента может быть сколько угодно окон. Фокус окна — синтетическое свойство окна получать эксклюзивные события (перемещение мыщи, ввод с клавиатуры)
- Фокусом обладает не более одного окна
 - Предварительно эти события могут обрабатываться другими X-клиентами
 - По умолчанию фокус — у того окна, над которым находится курсор мыши, но X-клиенты могут принудтельно перемещять фокус
 
Сойства окна (управляются окноводом):
- Геометрия
 - Позиция
 - Z-ордер
 - Хочет ли окно получать все события (является ли модальным)
 - ...
 
Шрифты:
Определяемые сервером (FontPath в настройка X-сервера):
- Клиент приходит с шаблоном (размер, начертание и пр.), сервер подбирает подходящий шрифт сообразно натройке на конкретное устройство (разрешение и пр.)
 - xfs: раздача шрифтов по сети всем X-серверам
 - растеризация на стороне сервера
 Недостаток: каждый используемый шрифт занимает память сервера
Определяемые клиентом (библиотека и утилиты fontconfig)
- занимают память клиента
 - растеризация на стороне клиента, шаблоны обрабатываются клиентской библиотекой
 - Недостаток: при каждом клиенте должен быть набор шрифтов
 
Виртуальные X-серверы
X-Сервер с ненулевым номером:
- Второй X-сервер, запущенный на второй видеокарте
 - Второй X-сервер, запущенный вторым пользователем, в то время как первый пользователь не работает, но из графической оболочки не вышел
 Вывод на другое граф. устройство: xprint (сервер печати по протоколу X11)
- Программная отрисовка: Xnest — «вложенный» X-сервер внутри клиентского окна, XVNC — VNC-сервер, превращающий отрисовку в видеопоток (например, mpeg) для VNC-клиента-смотрелки
 - Ретранслятор: 
- упаковщики X-протокола, серверы для перодоления МЭ
 sshd-X-сервер: обычно localhost:10.0, обращение к которому по защищённому ssh-каналу ретранслируется на пользовательскую машину, где запущен ssh -X. Этот ssh и посылает все X-запросы локальному X-серверу.
 
Рабочий стол
XOrg — это только инструмент (рубанок, молоток, гвозди), а не сам стол.
Решим с помощью XOrg поставленные задачи:
- Терминал: 
поддержка в системе — виртуальные терминалы: программа работает с устройствм /dev/ptmx, а в системе появляетс я новый терминал /dev/pts/номер.
- xterm, aterm, rxvt, konsole, getrm, eterm, Terminal, ...
 
 - Несколько рабочих областей на экране: окна и окновод
 - Ограничение контекста: виртуальные экраны и окновод
 - Быстрый доступ 
- Текстовый — меню
 - Графический — иконки
 
 - Мониторинг: панели (также супербыстрый доступ) и т. п
 - Рубрикация: поддержка со стороны дстрибутива (с каждым пакетом поставляется меню-файл с адресом ссылка на приложение в дереве меню)
 
Все задачи могут решаться разными программами: окновод, меню, панели, иконки — всё отдельно.
Запуск всего этого: .xinitrc или .xsession (.xsession.d)
Настройка всего этого .Xdefaults
Однородные среды
Вместо того, чтобы собирать рабочий стол вручную, можно воспользоваться готовым:
- Тяжёлые среды (единая объектная модель, высокоуровневое API, интерфейсная библиотека, много утилит) — KDE, Gnome
 Лёгкие среды — (API для расширения возможностей, интерфейсная библиотека, необходимые или простые утилиты): XFCE, ROX, WindowMaker
- Расширенные окноводы с возможностями меню, панелей, иконок и т. п. — почти все
 
Достоинства:
- Единый интерфейс, документация
 - Единые настройки ⇒ gui-программы для настройки, в т. ч. произвольного приложения под эту среду
 - Дополнительные возможности (DnD, сообщение и т. п.)
 - Быстрое попадание в 80%*80% (вм. выше)
 - Большое сообщество: темы, модули и т. п.
 
Недостатки:
- Большая сложность настройки (особенно без GUI)
 - Большая сложность самой среды, непредсказуемое и/или ошибочное поведение
 - Жёсткая парадигма (100%-80%=20%)
 - Ресурсоёмкость
 
