# Технологии рабочего стола

## Регистрация приложений и типов файлов

Приложение полезно, если пользователь может его найти и запустить. Пользователи GNOME могут запускать приложения с помощью главного меню или запускать их непосредственно указывая файлы в файловом менеджере. Рабочее окружение GNOME позволяет добавлять приложения и типы файлов при установке приложения. Этот механизм описан на freedesktop.org, поэтому одни и те же данные позволяют приложениям функционировать в различных средах рабочего стола.

Добавить приложения также просто, как предоставить файл содержимого рабочего стола с необходимой информацией. Файлы содержимого рабочего стола используют простой синтаксис ключ-значение с дополнительными данными, необходимыми для перевода конкретных значений. Файл содержимого рабочего стола для данного приложения содержит следующую информацию:

- Название приложение и примечание, переведённые на все языки, поддерживаемые данным приложением.

- Список категорий из фиксированного набора, которые используются для выбора положения приложения в главном меню приложений.

- Изображение, либо как полный путь к файлу, либо как имя значка в системе тем значков рабочего стола.

- Список типов файлов, поддерживаемых приложением и

- Команда запуска данного приложения.

Если приложение обрабатывает тип файлов, который еще не зарегистрирован в системе, необходимо добавить этот тип файлов в реестр. Все типы файлов связаны с типами MIME. Например, звуковые файлы Ogg Vorbis имеют тип MIME `application/ogg`. Чтобы добавить тип MIME необходимо предоставить описание типа, с помощью XML-файла c информацией о MIME. Эти файлы содержат переведённое имя типа, а также информацию о том, как определить тип файла либо по имени файла, либо по его содержимому.

За дополнительной информацией обратитесь к The Desktop Entry Specification и The Desktop Menu Specification. За дополнительной информацией о типах файлов обратитесь к The Shared MIME Info Specification.

## Апплеты панели

GNOME содержит гибкий и мощный механизм панелей, на которые пользователь может добавить любое количество апплетов, обеспечивающих быстрый доступ к ресурсам, информации и функциональность любого вида. Например, рабочий стол GNOME поставляется с апплетами для переключения между окнами и рабочими местами, апплетами для отображения текущей погоды, сетевой активности и другими.

Апплеты панели могут расширять функционал основного приложения, а могут быть независимыми приложениями. Для отображения мгновенных уведомлений приложения желательно использовать область уведомлений, которая также находится на панели пользователя. Апплеты следует использовать, когда необходимо обеспечить большую функциональность, чем могут предоставить значки области уведомлений.

Апплеты панели — независимые процессы, использующие Bonobo для взаимодействия с панелью. С помощью Bonobo апплеты интегрируются в панель, что обеспечивает целостность пользовательского интерфейса. Например, контекстное меню для каждого апплета панели содержит стандартные пункты его перемещения, удаления и блокирования. Кроме того, каждый апплет может добавить другие пункты в контекстное меню для выполнения нужных действий. Например, апплет Сводка погоды содержит в контекстном меню пункты для открытия детального отчета о погоде и обновления текущей информации.

Заметим, что Bonobo устарел. Вместо него нужно использовать D-Bus и другие средства.

За дополнительной информацией об апплетах панели обратитесь к Panel Applet Library.

## Область уведомлений

Кроме кнопок запуска приложений и апплетов панель GNOME содержит область уведомлений, с помощью которой приложения могут уведомлять пользователя о произошедших событиях. Например, для уведомления о получении новых писем, доступных обновлениях, запланированных встречах и других событиях.

Уведомления — это значки, которые приложения могут поместить в область уведомлений на панели пользователя. Приложение может обработать события щелчков мыши на значке. В настоящее время система уведомлений реализована в экспериментальной библиотеке Egg, однако следующая версия GTK+ будет поддерживать значки уведомлений.

Область уведомлений описана в спецификациях freedesktop.org, поэтому значки уведомлений должны появиться и в других окружениях рабочего стола. За дополнительной информацией об области уведомлений обратитесь к Спецификации протокола системного лотка.

## Менеджер файлов

GNOME поставляется с Nautilus — интуитивным и мощным менеджером файлов. Используя технологию GnomeVFS, Nautilus может отображать удалённые каталоги также как локальные, что обеспечивает целостный интерфейс доступа к пользовательским данным.

Nautilus поддерживает подключаемые модули, что позволяет разработчикам расширять его функциональность и предоставить пользователям больше информации о файлах. Это обеспечивает более понятное взаимодействие с пользователем, избегая необходимости использовать другие приложения управления файлами различных типов.

Подключаемые модули Nautilus расширяют функциональность менеджера файлов разными способами. Они могут отразить дополнительную информацию в диалог свойств файлов, предоставляя пользователю всю необходимую информацию. Например, GNOME поставляется с подключаемым модулем, который отображает дополнительную информацию о аудио и видео файлах: используемый кодек, размеры кадра видео, имя артиста и группы аудио файлов, полученных с компакт-диска.

Подключаемые модули могут добавлять колонки в список просмотра и автоматически отображать эмблемы на файлах, что может быть использовано для предоставления пользователю информации, которою он может охватить одним взглядом. Например, подключаемый модуль Nautilus может предоставлять информацию о версии в свойствах каталога, который был получен с помощью системы контроля версий. Пользователи могут посмотреть напрямую в менеджере файлов был ли файл обновлен на сервере или были ли изменён файл на данном компьютере.

Nautilus позволяет разработчикам добавлять пункты контекстного меню для файлов и каталогов. Также можно определить для каких типов файлов следует отображать данные пункты. Таким образом, контекстное меню предоставляет только те действия, которые важны именно для выделенных файлов. Например, архиватор для GNOME File Roller добавляет в контекстное меню пункт извлечения файлов. Дополнительные пункты контекстного меню обеспечивают простой доступ к общим операциям для разных типов файлов.

В дополнение к гибкой архитектуре, основанной на подключаемых модулях Nautilus может отображать миниатюры для тех типов файлов, которые обрабатывает программа создания миниатюр. Миниатюры показываются при предварительном просмотре файла, помогая пользователям найти нужные файлы. GNOME может автоматически создавать миниатюры для большинства видео файлов и изображений и позволяет приложениям устанавливать дополнительные программы для создания миниатюр файлов, связанных с данным приложением. Управление миниатюрами полностью определено freedesktop.org, так что любые программы для создания миниатюр будут использоваться всеми приложениями.

## Менеджер окон

Менеджер окон — специальная программа, ответственная за отображение рамок и заголовков окна. Менеджер окон отвечает за обработку всех операций, связанных с окнами, таких как: перемещение, изменение размера, сворачивание и перемещение между рабочими областями. Окна управляются с минимальным участием или практически без участия разработчиков приложения. Когда приложениям необходимо повлиять на менеджер окон, они могут добавлять дополнительные сведения к своим окнам, вызывая функции GTK+.

В то же время внешние программы могут взаимодействовать напрямую с менеджером окон и даже контролировать его поведение. Используя библиотеку GNOME libwnck, приложения могут получить информацию о всех окнах и дать команды менеджеру окон на выполнение различных действий с этими окнами.

Библиотека libwnck не специфична для менеджера окон GNOME. Вся её функциональность использует Расширенные сообщения менеджера окон (Extended Window Manager Hints) или EWMH. EWMH разработан совместно с freedesktop.org для унификации взаимодействия с оконным менеджером в различных окружениях рабочего стола.

Взаимодействия с оконным менеджером с помощью libwnck используются как в простых задачах, например отображения рабочего пространства и апплета, показывающего список открытых окон, так и сложных, например выполнение автоматических действий при создании нового окна на основе некоторых свойств окна.

## Центр управления

Рабочий стол GNOME предоставляет одно меню для всех системных настроек рабочего стола и административных настроек. Диалоги настроек и свойств, помещённые в это меню, становятся легко доступными. Диалоги могут быть помещены в меню свойств путем их добавления в реестр приложений с категорией `Setting`. Для помещения диалогов в меню административных настроек необходимо указать две категории: `Settings` и `System`.

Диалог настройки системы рабочего стола следует помещать в административное меню, а диалоги, изменяющие настройки лишь нескольких приложений, следует помещать в меню предпочтений. Для настроек конкретных приложений использовать эти глобальные меню нежелательно.

## Хранение паролей

GNOME предоставляет современный и защищённый менеджер брелоков для хранения паролей пользователя и другой конфиденциальной информации. Приложения могут использовать библиотеку менеджера брелоков для хранения паролей и доступа к ним. Пользователи могут управлять своими паролями, используя приложение GNOME Seahorse.

Менеджер брелоков предоставляет несколько брелоков, каждый из которых может содержать любое количество элементов. Элементы брелока содержат какую-либо информацию, чаще всего пароли. Каждый брелок блокируется индивидуально, и для разблокирования необходимо указать пароль для каждого брелока. После разблокирования брелока пользователю становятся доступны все его элементы.

Менеджер брелоков поддерживает список контроля доступа для каждого элемента брелока, контролируя доступ приложений только к своим элементам. Если неизвестное приложение пытается получить доступ к элементу брелока, менеджер брелоков запросит у пользователя разрешить или запретить доступ для данного приложения. Этот механизм предотвращает доступ к важным данным пользователя вредоносных или плохо написанных программ.

Данные брелока хранятся в файловой системе и шифруются с помощью блочного алгоритма шифрования AES, а хэш атрибутов содержимого шифруется с помощью SHA1. Хэш атрибутов используется для поиска элементов, запрошенных приложением без разблокировки брелока. Брелок необходимо будет разблокировать, когда нужный элемент найден и к нему будет разрешён доступ.

Менеджер брелоков содержит брелок сеанса, содержимое которого никогда не записывается на диск и теряется при окончании сеанса пользователя. Обычно он используется для хранения паролей, которые могут использоваться только в текущем сеансе.

При использовании GIO для доступа к удалённым серверам автоматически используются преимущества менеджера брелоков. Когда GVFS необходимо аутентифицировать пользователя он пытается сохранить пароль либо в брелоке по умолчанию, либо в брелоке сеанса.

Менеджер брелоков необходимо использовать в приложении, если требуется сохранять пароли или другую важную информацию. Использование менеджера брелоков обеспечит удобный интерфейс пользователя и безопасное хранение данных.

Программный интерфейс настроек описан в gnome-keyring Reference Manual и libseahorse Reference Manual.

## Управление сеансами

GNOME обеспечивает механизм, позволяющий приложениям восстанавливаться и завершаться от сеанса к сеансу. Пользователь может завершить сеанс с запущенным приложением, а при следующем входе это приложение полностью восстановится. Для обеспечения такой функциональности приложение должно уметь работать с менеджером сеансов и сохранять свое состояние при завершении сеанса.

Заметим, что этот раздел устарел, так как GnomeClient и Libgnomeui рекомендуется больше не использовать. Вместо них в новом коде нужно использовать EggSMClient. В настоящее время ведётся работа по включению EggSMClient непосредственно в GTK+. Стабильность программного и двоичного интерфейсов гарантирует, что GnomeClient продолжит работать и поддерживаться весь жизненный цикл GNOME 2.

GNOME предоставляет простой API для управления сеансами в библиотеке пользовательского интерфейса GNOME. Обратитесь к разделу GnomeClient в документе GNOME UI Library Reference Manual за дополнительной информацией о работе с менеджером сеансов GNOME.

## Адресная книга и календарь

С помощью сервера данных Evolution GNOME предоставляет единую адресную книгу и календарь, которые могут использовать любые приложения для сохранения и получения информации, что позволяет пользователю больше не поддерживать списки контактов в каждом приложении отдельно и вручную копировать события в календарь.

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

Кроме того, приложения могут использовать сервер приложений Evolution для хранения и получения информации о назначенных встречах и событиях в календаре пользователя. Например, часы на панели при щелчке мыши на них показывают простой календарь, в котором отмечаются все запланированные пользователем встречи, что позволяет быстро просмотреть намечающиеся встречи без запуска приложения Календарь.

За дополнительной информацией об адресной книге обратитесь к Evolution API Reference: libebook. За дополнительной информацией о календаре обратитесь к Evolution API Reference: libecal.

## Эргономика

Рабочий стол GNOME нацелен на удобство использования и обеспечение целостного и простого интерфейса пользователя. Компьютеры используются для выполнения работы (или игры), но не для решения сложных интерфейсных головоломок. При проектировании приложений необходимо рассмотреть то, как хорошо пользователи узнают общие парадигмы интерфейса, как быстро они изучат элементы интерфейса, которые уникальны для приложения и как эффективно они смогут выполнять задачи после изучения интерфейса.

GNOME предлагает исчерпывающее руководство по созданию пользовательских интерфейсов, которое помогает создать привлекательные и удобные приложения. Хотя ни одно руководство не может дать единого ответа на все вопросы эргономики, но понимание рассмотренного руководства облегчит создание эргономичных приложений. За дополнительной информацией обратитесь к Руководству GNOME по созданию пользовательских интерфейсов.

## Документация

Все приложения необходимо сопровождать документацией, помогающей пользователям понять суть приложения и решать возникающие проблемы. Хотя хорошо спроектированное приложение не требует прочтения документации перед использованием, тем не менее документация может быть важным инструментом пользователя, особенно для сложных приложений.

GNOME содержит единую платформу обеспечения пользователя документацией. Документацию можно поставлять в формате DocBook, на настоящий момент признаваемом индустриальным стандартом. При использовании формата DocBook не нужно беспокоиться о деталях форматирования, так как документация будет автоматически отформатирована в соответствии с едиными соглашениями, принятыми для всей системной документации.

Приложение просмотра помощи GNOME Yelp показывает на экране и позволяет распечатать документацию, содержит список всей документации в системе и содержит механизмы полнотекстового поиска по всей документации. Используя систему помощи GNOME, вы получаете все эти преимущества бесплатно.

За подробной информацией о написании документации к приложению обратитесь кGNOME Handbook of Writing Software Documentation, DocBook: The Definitive Guide и GNOME Documentation Style Guide.