Сборка пакетов/Соглашение по стилю RPM-пакетов/Меню рабочего стола

Перейти к: навигация, поиск
9. Меню рабочего стола

Назад

Далее



9. Меню рабочего стола


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

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

До SL 9.0, меню рабочего стола обновлялось с помощью утилиты SUSE susewm. Одной из основных проблем этого способа было то, что информация о элементах меню (таких как: название, значок, позиция в меню, выполняемая команда) хранилась не в соответствующих пакетах, а в базе данных пакета susewm и только разработчики SUSE могли добавить новый элемент в меню (с помощью внутренней утилиты SUSE).

Начиная с SL 9.0, в SUSE Linux используется спецификация меню рабочего стола описанная в http://freedesktop.org/Standards/menu-spec. Данное решение, основанное на использовании .desktop файлов, полностью поддерживается рабочими окружениями KDE и GNOME, и используется в них по умолчанию. В дополнение, SUSE Linux предоставляет утилиту /usr/bin/xdg_menu, которая позволяет обновлять меню и для других окружений рабочего стола. Утилита входит в состав пакета xdg-menu и предоставляет поддержку для других окружений на подобии WindowMaker (fvwm2, blackbox и icewm).


Базовый формат .desktop файлов


Элементы меню рабочего стола хранятся в .desktop файлах. В данном разделе приведена только основная информация об этих файлах. Детально формат описан в http://www.freedesktop.org/standards/desktop-entry-spec.

Это обычные текстовые файлы, информация разделена на группы, каждая группа начинается со строки:

[имя_группы] 

Все последующие строки принадлежать этой группе до опрделения новой группы или до конца файла.

Информация хранится с помощью пар {ключ,значение} следующим способом:

ключ=значение 

Пример ниже взят из файла /usr/share/applications/xboard.desktop и определяет элемент меню для игры xboard:

[Desktop Entry] 
Name=Xboard 
Comment=Chess Game 
Type=Application 
Exec=xboard 
Icon=xboard 
Categories=Game;BoardGame; 
X-SuSE-translate=true 


Элемент меню рабочего стола


Данный раздел дает точное описание формата .desktop файлов специфичного для SUSE Linux. Эти файлы следуют спецификации элемента рабочего стола (http://www.freedesktop.org/standards/desktop-entry-spec), дополненной спецификацией меню рабочего стола (http://freedesktop.org/Standards/menu-spec). Этот раздел содержит лишь наиболее важную или специфичную для SUSE информацию. За дополнительной информацией обращайтесь к официальной документации (см. ссылки выше).

Эти файлы имеют расширение .desktop, содержат текст в кодировке UTF-8 и группу [Desktop Entry] со следующими ключами:


Обязательные ключи:

  • Type определяет тип элемента рабочего стола. Значение Application должно быть использовано для элементов меню.
  • Name определяет название элемента отображаемое в меню (обязательно на английском языке).
  • Exec определяет исполняемый файл, желательно избегать использования абсолютных путей.
  • Categories определяет к каким категориям принадлежит приложение. Значением является список с ';' в качестве разделителя. Допустимые категории перечислены в разделе 9.4 "Список категорий". Используется для группировки элементов меню.
  • X-SuSE-translate определяет, требуют ли перевода ключи Name и GenericName. Возможные значения: “true” и “false”. Если ключ не определен, то он будет автоматически определен с помощью макроса %suse_update_desktop_file.См. также раздел 9.3 "Установка и обновление". Значение по умолчанию - “true”.


Необязательные ключи:

  • Icon определяет значок приложения. Значение этого ключа не содержит расширение файла или абсолютный путь к файлу. Поддерживаются только файлы .png и .xpm типов. Они должны быть установлены в предназначенные для этого директории согласно спецификации тем значков, в любой из двух директорий: $XDG_DATA_DIRS/icons или /usr/share/pixmaps/.
  • Comment определяет комментарий который будет отображатся в всплывающей подсказке.
  • Name[lang] определяет перевод ключа Name для языка lang. Значение должно быть в кодировке UTF-8.
  • Comment[lang] определяет перевод ключа GenericName для языка lang. Значение должно быть в кодировке UTF-8.
  • MimeType определяет файлы каких mime-типов может открывать приложение. Значение - список mime-типов разделенных точкой с запятой (;).
  • OnlyShowIn определяет в каком рабочем окружении будет отображатся данный элемент меню, возможные значения ключа: “GNOME”, “KDE” или “XFCE”.


Пример из файла /usr/share/applications/xemacs.desktop:

[Desktop Entry] 
Name=X Emacs 
Comment=Text Editor 
Comment[cs]=Textov� editor 
Comment[de]=Texteditor 
Comment[fr]=Éditeur de texte 
Comment[it]=Editor di testi 
MimeType=text/english;text/plain;text/x-makefile;\ 
text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;\ 
text/x-java;text/x-moc;text/x-pascal;text/x-tcl;\ 
text/x-tex;application/x-shellscript;text/x-c;text/x-c++; 
Exec=xemacs %f 
Icon=emacs 
Type=Application 
Terminal=false 
StartupNotify=true 
StartupWMClass=emacs 
X-KDE-AuthorizeAction=shell_access 
Categories=TextEditor 
X-SuSE-translate=true

Установка и обновление


Спецификация меню рабочего стола разрешает помещать .desktop файлы в несколько директорий. В SUSE Linux это директории:

  • /opt/kde3/share/applications/
  • /opt/gnome/share/applications/
  • /usr/share/applications/

Это означает, что приложения GNOME и KDE могут устанавливать .desktop-файлы в привычные для себя директории. И данные элементы меню будут также доступны и в других рабочих окружениях, этого можно избежать используя тег OnlyShowIn в .desktop-файлах, например: OnlyShowIn=GNOME; или OnlyShowIn=KDE;. Из этого также следует, что .desktop-файлы для приложений GNOME и KDE должны следовать всем вышеприведенным правилам.

Макрос %suse_update_desktop_file должен быть вызван для каждого .desktop файла. Он обновит перевод, сделает некоторые разумные проверки файла. Этот макрос можно использовать для изменения категории .desktop файла, или создания его с нуля. Данный макрос требует предварительной установки пакета update-desktop-files. Подробности см. в [| разделе 3.33 "%suse_update_desktop_file"].


Пакеты содержащие GNOME и KDE приложения обычно имеют собственные .desktop файлы, которые устанавливаются через make install. В этом случае будет достаточно выполнить макрос %suse_update_desktop_file для этих файлов и добавить их в секцию %files. Ниже показан пример использования для пакета kdclock:


BuildRequires: ... update-desktop-files ... 
[...] 
 
%install 
[...] 
%suse_update_desktop_file  %name Utility TimeUtility 
 
%files 
[...] 
/opt/kde3/share/applnk/Utilities/kdclock.desktop 


Другие пакеты обычно не предоставляют .desktop файлы по умолчанию. В простом случае макрос %suse_update_desktop_file может создать этот файл самостоятельно. А более сложные .desktop файлы обычно добавляют как extra source. В этом случае они с помощью макроса %suse_update_desktop_file в секции %install они устанавливаются, проверяются и обновляют перевод. И на конец этот фаил надо указать в секции %files. Этот пример взять из пакета xboard (где пропущенный заначек устанавливается из extra source):


BuildRequires: ... update-desktop-files ... 
[...] 
Source1:      %name.desktop 
Source2:      %name.png 
[...] 
 
%install 
[...] 
mkdir -p $RPM_BUILD_ROOT/usr/share/pixmaps/ 
install -m 644 $RPM_SOURCE_DIR/%name.png \ 
               $RPM_BUILD_ROOT/usr/share/pixmaps 
%suse_update_desktop_file -i %name Game BoardGame 
 
%files 
[...] 
/usr/share/applications/%name.desktop 
/usr/share/pixmaps/%name.png 


Макрос %suse_update_desktop_file ищет desktop файлы в папках $RPM_SOURCE_DIR и /usr/share/update-desktop-files/templates. В примере выше показано обычное решение когда .desktop называется так же как и имя пакета и находится в папке $RPM_SOURCE_DIR.

Смотри [| разделе 3.33 "%suse_update_desktop_file"] для получения более детальной информации.

Список категорий


Данный раздел предоставляет список всех используемых категорий в SUSE Linux. They are needed to sort desktop menu entries into submenus. The list is based on the desktop menu specification, see http://freedesktop.org/Standards/menu-spec. In addition, there are also some SUSE-specific categories that are not currently part of the specification.

The SUSE-specific categories must be prefixed by "X-SuSE-". However, the prefix is not mentioned in the lists below because the situation is evolving and the categories are becoming part of the specification. The %suse_update_desktop_file macro adds the prefix where needed.

Some of the categories were renamed in the past. The obsolete names are mentioned in the lists below. They are automatically renamed by the %suse_update_desktop_file macro.


Категория Development


Используйте следующие подкатегории вместе с категорией Development:

  • Building
  • Debugger
  • Design
  • Documentation
  • GUIDesigner
  • IDE
  • Profiling
  • RevisionControl
  • Translation

Пример:

Categories=Development;IDE;


Категория Education


Используйте следующие подкатегории вместе с категорией Education:


  • Art
  • Astronomy
  • Chemistry
  • Construction
  • Engineering
  • Languages — устаревшее Language and X-KDE-Edu-Language
  • Math
  • Music
  • School
  • Science
  • Teaching — устаревшее X-KDE-Edu-Teaching

Пример:

Categories=Education;Astronomy;


Категория Game


Используйте следующие подкатегории вместе с категорией Game:

  • 3DGame
  • ActionGame
  • AdventureGame
  • Amusement
  • ArcadeGame
  • BlocksGame
  • BoardGame
  • CardGame
  • FirstPersonGame
  • KidsGame
  • LogicGame
  • PlatformGame
  • PuzzleGame
  • RolePlaying — устаревшее RolePlayingGame
  • Simulation — устаревшее SimulationGame
  • SportsGame
  • StrategyGame

Пример:

Categories=Game;ArcadeGame;


Категория Graphics


Используйте следующие подкатегории вместе с категорией Graphics:

  • 2DGraphics
  • 3DGraphics
  • OCR
  • Photography
  • RasterGraphics
  • Scanning
  • VectorGraphics
  • Viewer

Пример:

Categories=Graphics;Viewer;


Категория Network


Используйте следующие подкатегории вместе с категорией Network:

  • Dialup — устаревшее DialUp
  • Email
  • FileTransfer
  • HamRadio
  • InstantMessaging
  • IRCClient
  • Monitor
  • News — устаревшее Newsreader
  • P2P
  • RemoteAccess
  • Telephony — устаревшее Telephone
  • WebBrowser
  • WebDevelopment

Пример:

Categories=Network;Email;


Категория AudioVideo


Используйте следующие подкатегории вместе с категорией AudioVideo:

  • Midi
  • Mixer — устаревшее AudioMixer
  • Music
  • AudioVideoEditing
  • Player — устаревшее AudioVideoPlayer
  • Recorder — устаревшее AudioVideoRecorder
  • DiscBurning — устаревшее Burning
  • CD
  • Jukebox
  • Sequencer
  • Tuner
  • TV

Пример:

Categories=Audiovideo;AudioMixer;


Категория Office


Используйте следующие подкатегории вместе с категорией Office:

  • ContactManagement — устаревшее AddressBook
  • Calendar
  • Database
  • Dictionary
  • Finance
  • FlowChart
  • Presentation
  • ProjectManagement
  • Spreadsheet
  • Viewer
  • Warehouse
  • WordProcessor

Пример:

Categories=Office;Presentation;


Категория Utility


Используйте следующие подкатегории вместе с категорией Utility:

  • Accessibility
  • Applet
  • Archiving
  • Calculator
  • DesktopUtility
  • PDA
  • PrintingUtility
  • Security
  • Shell
  • SyncUtility
  • Telephony
  • TextEditor
  • TimeUtility
  • WebUtility
  • XMLUtility

Пример:

Categories=Utility;TextEditor;


Категория System


Используйте следующие подкатегории вместе с категорией System:


  • Applet
  • Archiving
  • Backup
  • Database
  • Documentation
  • Emulator
  • FileManager
  • Filesystem
  • HardwareSettings
  • Monitor
  • Network
  • PackageManager
  • RemoteAccess
  • Screensaver
  • Security
  • Shell
  • SystemSetup
  • Telephony — устаревшее Telephone
  • TerminalEmulator
  • TrayIcon
  • Utility

Пример:

Categories=System;Emulator;



Назад

Далее

8. Задания Cron

В начало

10. Специальные пакеты