Первые впечатления
Что, что показывает типичная Linux-система на экране — это не Linux, Это рабочий стол. Рабочий стол может быть организован множеством различных способов и на базе множества различных прикладных программ.
О рабочем столе в прошлом семестре: LecturesDistro2007/05_Usability, LecturesDistro2007/06_Personal и LecturesDistro2007/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 и что они значат?