<?xml version="1.0" encoding="utf-8"?>
<!-- -*- indent-tabs-mode: nil -*- -->
<chapter id="desktop-tech">
  <title>Технологии рабочего стола</title>

<section id="applications-mime">
  <title>Application and File Type Registries</title>
  <para>In order for applications to be useful, users need to be able to find
  and run them.  Users of the GNOME desktop may run applications using the
  applications menu, or they may run them by accessing files in the file
  manager.  The GNOME desktop allows you to add applications and file types
  when you install your application.  The mechanism for these is specified
  on <ulink url="http://www.freedesktop.org/">freedesktop.org</ulink>, so
  the same data will allow your application to function in other desktop
  environments.</para>

  <para>Adding your application is as simple as providing a desktop entry
  file with the necessary information.  Desktop entry files use a simple
  key-value syntax, with extra provisions for providing translated content
  of particular values.  Your application's desktop entry file will contain
  the following information:</para>

  <itemizedlist>
    <listitem><para>A name and a comment, each translated into as many languages
    as your application supports,</para></listitem>
    <listitem><para>A list of categories from a fixed list, which are used to
    place your application in the applications menu,</para></listitem>
    <listitem><para>An icon, either as a full file path or as a simple name for
    the icon theme system, </para></listitem>
    <listitem><para>A list of file types that your application supports,
    and</para></listitem>
    <listitem><para>The command to run your application.</para></listitem>
  </itemizedlist>

  <para>If your application handles custom file types that are not already
  known by the system, you will need to add those types to the file type
  registry.  All file types are accessed with MIME types.  For example, Ogg
  Vorbis audio files have the MIME type <literal>application/ogg</literal>.
  To add a MIME type, you need to provide a description of the type using
  a MIME information XML file.  These files provide a translated name for
  the type as well as information on how to determine which files are of
  the type, either by matching the file name or by inspecting the contents
  of the file.</para>

  <para>For more information on applications, see <ulink url="http://www.freedesktop.org/wiki/Standards/desktop_2dentry_2dspec">The
  Desktop Entry Specification</ulink> and <ulink url="http://www.freedesktop.org/wiki/Standards/menu_2dspec">The
  Desktop Menu Specification</ulink>.  For more information on file types,
  see <ulink url="http://www.freedesktop.org/wiki/Standards/shared_2dmime_2dinfo_2dspec">The
  Shared MIME Info Specification</ulink>.</para>
</section>

<section id="panel-applets">
  <title>Panel Applets</title>
  <para>The GNOME desktop features flexible and powerful panels to which users
  can add any number of small applications, called panel applets.  Panel applets
  can provide all sorts of quick access to all sorts of useful information and
  functionality.  For instance, the GNOME desktop ships with panel applets to
  switch between windows and workspaces, display the current weather conditions,
  and display network activity, among many others.</para>

  <para>You may provide a panel applet to augment the functionality of your
  application, or you may provide a simple stand-alone panel applet.  If you
  simply need to display quick notifications, you should consider using the
  notification area instead, which is also displayed in the user's panel.
  Panel applets should be used when you need to provide more functionality
  than that provided by notification icons.</para>

  <para>Panel applets are independent processes that use Bonobo to communicate
  with the panel.  Bonobo allows applets to integrate with the panel to provide
  a consistent user experience.  For example, the context menu for every panel
  applet contains standard items to remove, move, and lock the applet.  Each
  panel applet can then add items to the context menu to perform other actions.
  The <application>Weather Report</application> panel applet, for example, has
  context menu items to display a detailed report and to update the displayed
  information.</para>

  <para>For more information on panel applets, see the
  <ulink url="http://library.gnome.org/devel/panel-applet/stable/">Panel
  Applet Library</ulink>.</para>
</section>

<section id="nofication-area">
  <title>Notification Area</title>
  <para>In addition to launchers and panel applets, the GNOME panel also
  features a notification area that applications can use to notify users
  of events.  Notifications can be used to alert the user of new emails,
  available updates, upcoming meetings, or any number of other events.</para>

  <para>Notifications are simple icons that your application can place in
  the notification area on the user's panel.  Your application can then
  take further action when the user clicks on the icon.  Currently, the
  notification system is implemented in the experimental Egg library;
  however, the next version of GTK+ will have support for notification
  icons.</para>

  <para>The notification area is a <ulink url="http://www.freedesktop.org/">freedesktop.org</ulink> specification,
  so your notification icons will appear in other desktop environments as
  well.  For more information on the notification area, see <ulink url="http://freedesktop.org/wiki/Standards/systemtray_2dspec">The System
  Tray Protocol Specification</ulink>.</para>
</section>

<section id="nautilus">
  <title>Менеджер файлов</title>

  <para>GNOME ships with <application>Nautilus</application>, an intuitive
  and powerful file manager.  Using the advanced GVFS technology,
  <application>Nautilus</application> is able to display remote folders just
  like folders on the local file system, giving users access to all their
  files everywhere with a single consistent interface.</para>

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

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

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

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

  <para>В дополнение к гибкой архитектуре, основанной на подключаемых модулях <application>Nautilus</application> может отображать миниатюры для тех типов файлов, которые обрабатывает программа создания миниатюр. Миниатюры показываются при предварительном просмотре файла, помогая пользователям найти те файлы, которые им нужны. GNOME может автоматически создавать миниатюры для большинства видео файлов и изображений и позволяет приложениям устанавливать дополнительные программы для создания миниатюр файлов, связанных с данным приложением. Управление миниатюрами полностью определено <ulink url="http://www.freedesktop.org/">freedesktop.org</ulink>, так что любые программы для создания миниатюр, которые вы предоставляйте, могут быть использованы всеми приложениями.</para>
</section>

<section id="window-manager">
  <title>Менеджер окон</title>

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

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

  <para>The libwnck library isn't specific to GNOME's window manager.  All
  of its functionality uses the Extended Window Manager Hints, or EWMH.
  EWMH was developed jointly with
  <ulink url="http://www.freedesktop.org">freedesktop.org</ulink> to provide
  unified window manager interaction across multiple desktops.</para>

  <para>Window manager interaction with libwnck can be used for simple tasks,
  such as displaying workspace and window list applets on the user's panel,
  as well as for complex applications, such as performing automatic actions
  on new windows based on certain window properties.</para>
</section>

<section id="control-center">
  <title>Центр управления</title>
  <para>The GNOME desktop provides a single menu of all the desktop-wide
  preferences and system administration settings.  Preferences and settings
  dialogs can be placed in this menu to make them easily accessible.
  Dialogs can be placed in the preferences menu by adding them to the
  applications registry with the <literal>Setting</literal> category.
  Dialogs can be placed in the administraion menu using both the
  <literal>Settings</literal> and <literal>System</literal> categories.</para>

  <para>If you provide a dialog that allows administrators to configure
  desktop systems, then you should add your dialog to the administration menu.
  If you provide a dialog that allows users to adjust preferences that affect
  a number of applications, then you should add your dialog to the preferences
  menu.  You should not use these global menus for individual application
  preferences.</para>
</section>

<section id="keyring">
  <title>Хранение паролей</title>

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

  <para>The keyring manager provides any number of keyrings, where each
  keyring can contain any number of keyring items.  Items in a keyring
  store some piece of data, often a password.  Each keyring is locked
  individually, and users must provide a password to unlock the keyring.
  Once a keyring has been unlocked, the user has access to all of the
  items in that keyring.</para>

  <para>The keyring manager provides access control lists for each keyring
  item, controlling with applications are allowed access to that item.
  If an unknown application attempts to access a keyring item, the keyring
  manager will prompt the user to allow or deny that application access.
  This helps prevent malicious or poorly-written programs from accessing
  the user's sensitive data.</para>

  <para>Keyring data stored on the file system is encrypted with the AES
  block cipher, and SHA1 is used for hashes of the item's attributes.
  Using the attributes hash, the keyring manager is able to look up items
  requested by applications without ever unlocking the keyring.  The
  keyring has to be unlocked when a matching item is found and
  accessed.</para>

  <para>The keyring manager also provides a session keyring.  Items in
  the session keyring are never stored on disk, and are lost as soon as
  the user's session ends.  The session keyring can be used to store
  passwords to be used in the current session only.</para>

  <para>If you use GIO to access remote servers, you automatically
  get the benefits of the keyring manager.  Whenever GVFS needs to
  authenticate the user, it provides the option to store the password,
  either in the default keyring or in the session keyring.</para>

  <para>You should use the keyring manager whenever your application needs
  to store passwords or other sensitive data for users.  Using the keyring
  manager provides a better user experience while still keeping user data
  safe and secure.</para>
</section>

<section id="session">
  <title>Session Management</title>
  <para>GNOME provides tools to allow your application to run smoothly from
  session to session.  Users can log out with running applications and have
  those applications fully restored when they log back in.  To provide this
  functionality, your application must connect to the session manager and
  save its state when the user logs out.</para>

  <para>GNOME provides a simple API for session management in the GNOME User
  Interface Library.  See the section <ulink url="http://library.gnome.org/devel/libgnomeui/stable/GnomeClient.html">GnomeClient</ulink>
  of the <ulink url="http://library.gnome.org/devel/libgnomeui/stable/">GNOME
  UI Library Reference Manual</ulink> for more information on working with
  the GNOME session manager.</para>
</section>

<section id="address-book-calendar">
  <title>Address Book and Calendar</title>
  <para>With Evolution Data Server, GNOME provides a single address book and
  calendar that all applications can use to store and retrieve information.
  Using Evolution Data Server means that users no longer have to maintain
  separate lists of contacts in each application, or manually copy events
  to their calendar.</para>

  <para>People use computers increasingly to interact with their friends
  and colleagues.  Applications such as email programs, instant messengers,
  and telephony and video conferencing applications are used to communicate
  with others.  These applications often provide contact lists to help users.
  Using Evolution Data Server, applications can store contact information in
  a single location, allowing all applications to see all the pertinent data
  about users' contacts.</para>

  <para>Applications can also use Evolution Data Server to store and retrieve
  appointments on the user's calendar.  For example, the clock on the panel
  shows a simple calendar when clicked.  If the user has any appointments
  scheduled, they are shown alongside the calendar.  This makes it easy to
  see upcoming appointments without opening a full calendar application.</para>

  <para>For more information on the address book, see <ulink url="http://gnome.org/projects/evolution/developer-doc/libebook/ch01.html">
  Evolution API Reference: libebook</ulink>.  For more information on the
  calendar, see <ulink url="http://gnome.org/projects/evolution/developer-doc/libecal/index.html">
  Evolution API Reference: libecal</ulink>.</para>
</section>

<section id="usability">
  <title>Удобство использования</title>
  <para>The GNOME desktop is designed around usability, and it aims to provide
  a consistent and simple user experience.  People use computers to get work
  done (or to play!), not to figure out complicated user interface puzzles.
  When designing your application, you should consider how well users can
  recognize common user interface paradigms, how quickly they can learn the
  elements that are unique to your application, and how efficiently they can
  execute tasks once they've learned them.</para>

  <para>GNOME provides comprehensive Human Interface Guidelines to help you
  write applications that are attractive and usable.  While no guidelines can
  provide a single answer for all usability concerns, understanding the GNOME
  Human Interface Guidelines can make it easier to create a usable application.
  For more information, please see the <ulink url="http://library.gnome.org/devel/hig-book/stable/">GNOME Human
  Interface Guidelines</ulink>.</para>
</section>

<section id="documentation">
  <title>Документация</title>
  <para>All applications should provide documentation to help their users
  understand the application and troubleshoot problems that may arise.  While
  a well-designed application should not require reading the documentation
  before use, documentation can nonetheless be an important tool for users,
  particularly for complex applications.</para>

  <para>GNOME provides a unified framework for providing user documentation.
  You can provide documentation in the industry-standard DocBook format.  Using
  DocBook means that you don't have to worry about formatting details.  Instead,
  your documentation will be automatically formatted with the same consistent
  conventions as the rest of the system documentation.</para>

  <para>GNOME's help viewer, <application>Yelp</application>, displays and
  prints documentation, provides a listing of all documentation on the system,
  and allows the user to search the full text of all documentation.  Using the
  GNOME help system gives you all these features for free.</para>

  <para>For more information on writing documentation for your application,
  see the <ulink url="http://library.gnome.org/devel/gdp-handbook/stable/">GNOME
  Handbook of Writing Software Documentation</ulink>, <ulink url="http://www.docbook.org/tdg/en/html/docbook.html">DocBook: The Definitive
  Guide</ulink>, and the <ulink url="http://library.gnome.org/devel/gdp-style-guide/stable/">GNOME
  Documentation Style Guide</ulink>.</para>
</section>

</chapter>
