Сборка пакетов/Соглашение по стилю 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
andX-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. Специальные пакеты |