Первые впечатления

Что, что показывает типичная Linux-система на экране — это не Linux, Это рабочий стол. Рабочий стол может быть организован множеством различных способов и на базе множества различных прикладных программ.

О рабочем столе в прошлом семестре: LecturesCMC/Distro2007/05_Usability, LecturesCMC/Distro2007/06_Personal и LecturesCMC/Distro2007/11_Desktop.

Как обычно организован рабочий стол?

Знаком <!> отмечены необязательные пункты

  1. <!> Регистрация в системе с помощью *dm

  2. <!> Иконки на рабочем столе

  3. <!> Панели («Пукс», «быстрый доступ», «ящик с быстрым доступом», «лоток», «задачи», «меню приложения», ...)

  4. <!> Виртуальные экраны и их панель

  5. <!> Управление мышью: постоянное меню, контекстное меню, сводное меню приложений; третья кнопка мыши

  6. <!> Оконные декораторы и управления окнами с их помощью

  7. <!> Клавиатурные сокращения; переключение раскладки

Графических сред очень много; самые мощные: KDE, GNOME, XFCE, Rocks, но есть и множество других, не менее удобных

Почему ни один элемент не обязателен?

(Но ведь и графический интерфейс необязателен!)

XOrg: клиент-серверная архитектура

  • Протокол X11
  • Задачи X-сервера
  • Функции X-клиента
  • Идентификация клиента
  • Виды X-серверов

Принцип «одна задача — одна программа»

  • «The UNIX way»
  • Применительно к XOrg:
    1. Оконные декораторы и управление окнами (window manager)
    2. Общие и контекстные меню (не меню приложений)
    3. Виртуальные рабочие столы
    4. Иконки на рабочем столе
    5. Панели

Особенности:

  • 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 и что они значат?


CategorySpecCourse CategoryCmc CategoryLectures