Первые впечатления
Что, что показывает типичная Linux-система на экране — это не Linux, Это рабочий стол. Рабочий стол может быть организован множеством различных способов и на базе множества различных прикладных программ.
О рабочем столе в прошлом семестре: LecturesCMC/Distro2007/05_Usability, LecturesCMC/Distro2007/06_Personal и LecturesCMC/Distro2007/11_Desktop.
Как обычно организован рабочий стол?
Знаком 
 отмечены необязательные пункты 
 Регистрация в системе с помощью *dm 
 Иконки на рабочем столе 
 Панели («Пукс», «быстрый доступ», «ящик с быстрым доступом», «лоток», «задачи», «меню приложения», ...) 
 Виртуальные экраны и их панель 
 Управление мышью: постоянное меню, контекстное меню, сводное меню приложений; третья кнопка мыши 
 Оконные декораторы и управления окнами с их помощью 
 Клавиатурные сокращения; переключение раскладки 
Графических сред очень много; самые мощные: KDE, GNOME, XFCE, Rocks, но есть и множество других, не менее удобных
Почему ни один элемент не обязателен?
(Но ведь и графический интерфейс необязателен!)
XOrg: клиент-серверная архитектура
- Протокол X11
 - Задачи X-сервера
 - Функции X-клиента
 - Идентификация клиента
 - Виды X-серверов
 
Принцип «одна задача — одна программа»
- «The UNIX way»
 - Применительно к XOrg: 
- Оконные декораторы и управление окнами (window manager)
 - Общие и контекстные меню (не меню приложений)
 - Виртуальные рабочие столы
 - Иконки на рабочем столе
 - Панели
 
 
Особенности:
- Copy+paste: текст
 - Общий способ настройки (app-defaults): простая (human writeable) иерархическая модель с шаблонами
 - Обмен данными по X11
 
Графическая среда
- Обмен сложными объектами
 - Взаимодействие через IPC (например, посредством общей памяти)
 - Настройка через GUI ⇒ иной способ хранения настроек («реестр»?)
 - Более сложные интерфейсные взаимодействия: «лоток», «меню приложения» и т. п.
 - Унифицированный интерфейс / хитрые интерфейсные примитивы («jog dial» и т. п.)
 - (Полу)автоматическое формирование меню
 - Программный интерфейс для управления системными компонентами (видеоадаптер, монитор, клавиатура, мышь и пр.)
 
Тупиковый (старый) путь решения: «комбайн»
Общая интерфейсная библиотека (Qt / GTK) для всех приложений
- WM, совмещающий большинство функций (чуть ли не все пять)
 - Собственное ядро обмена событиями/данными в обход X11
 - Встроенный категоризатор меню и формат desktop-файла
 - Собственный набор пиктограмм
 - Постоянно меняющиеся системные привязки
 
Получается KDE и GNOME образца 2000 года.
Прогрессивный (новый путь развития): «стандартизация и модульность»
http://freedesktop.org: Стандартизация
- расширений X11
 
 графического и интерфейсного взаимодействия в рамках рабочего стола - структуры меню и меню-файла
 - взаимодействия с системой (hal/dbus)
 
 API и ABI для программ рабочего стола 
- Модульность: 
- разделение ф-ций WM, панелей, меню и т. п.
 
 сложные взаимодействия между программами, использующими разные интерфейсные библиотеки - Независимые наборы пиктограмм (tango)
 
 
Пока не договорились о:
- Стандарте на обмен не-X11 событиями
 - Стандарте на хранение настроек
 
Домашнее задание
Какие «стандарты» (спецификации) предлагает Freedesktop и что они значат?
