Desktop Menu Entry Policy: различия между версиями
(Баг 25413 имеет отношение только к wine, поэтому, xdg-open вместо url_handler.sh) |
|||
(не показано 5 промежуточных версий 2 участников) | |||
Строка 9: | Строка 9: | ||
* .desktop файл должен быть оформлен в соответствии с [http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html Desktop Entry Specification] | * .desktop файл должен быть оформлен в соответствии с [http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html Desktop Entry Specification] | ||
* .desktop файл, не предназначенный для установки в меню (например, чистый обработчик mime-type), должен иметь NoDisplay=true. | * .desktop файл, не предназначенный для установки в меню (например, чистый обработчик mime-type), должен иметь NoDisplay=true. | ||
* Если приложение может открывать другие файлы, то в MimeType= должны быть указаны MIME-типы допустимых файлов, а в Exec= должен быть указан тип аргумента с помощью | * Если приложение может открывать другие файлы, то в MimeType= должны быть указаны MIME-типы допустимых файлов, а в Exec= должен быть указан тип аргумента с помощью [http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#exec-variables Recognized field code] (%U, %F, и т. д.), см. [http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#mime-types .desktop mime types] | ||
* .desktop файл, предназначенный для установки в меню, должен иметь заполненным поле {{term|Categories}}. | * .desktop файл, предназначенный для установки в меню, должен иметь заполненным поле {{term|Categories}}. | ||
* в поле {{term|Categories}} обязательно должна быть указана одна главная (Main) категория из списка [http://standards.freedesktop.org/menu-spec/menu-spec-latest.html#category-registry Registered Categories] и одна вторичная (Secondary). Некоторые вторичные категории требуют указывать еще одну вторичную категорию, см. [http://standards.freedesktop.org/menu-spec/menu-spec-latest.html#category-registry стандарт]. | * в поле {{term|Categories}} обязательно должна быть указана одна главная (Main) категория из списка [http://standards.freedesktop.org/menu-spec/menu-spec-latest.html#category-registry Registered Categories] и одна вторичная (Secondary). Некоторые вторичные категории требуют указывать еще одну вторичную категорию, см. [http://standards.freedesktop.org/menu-spec/menu-spec-latest.html#category-registry стандарт]. | ||
Строка 32: | Строка 32: | ||
Для добавления в меню документации не рекомендуется использовать Type=Link, так как не все меню отображают его корректно. | Для добавления в меню документации не рекомендуется использовать Type=Link, так как не все меню отображают его корректно. | ||
Вместо этого рекомендуется воспользоваться Type=Application и в поле Exec открыть нужный документ с помощью | Вместо этого рекомендуется воспользоваться Type=Application и в поле Exec открыть нужный документ с помощью | ||
{{cmd| | {{cmd|xdg-open}}: | ||
<pre> | <pre> | ||
[Desktop Entry] | [Desktop Entry] | ||
Строка 40: | Строка 40: | ||
Comment=Manuals and other non-technical ducuments (html format, in Russian) from GNU Project | Comment=Manuals and other non-technical ducuments (html format, in Russian) from GNU Project | ||
Icon=howto | Icon=howto | ||
Exec= | Exec=xdg-open /usr/share/doc/doc-gnu-ru/HTML/index.html | ||
Categories=Development;Documentation; | Categories=Development;Documentation; | ||
</pre> | </pre> | ||
== Приложения == | == Приложения == | ||
Строка 75: | Строка 73: | ||
|} | |} | ||
== Policy Draft v1.0 (Предложения к расширению полиси) | == Запуск программ из меню с повышением прав == | ||
'''Policy Draft v1.0 (Предложения к расширению полиси)''' | |||
=== | === Чего делать нельзя === | ||
'''Запрещается''' писать {{cmd|sudo}} в .desktop файле так как sudo для этого не предназначено. | '''Запрещается''' писать {{cmd|sudo}} в .desktop файле так как sudo для этого не предназначено. | ||
Результатом запуска программы через {{prg|sudo}} могут стать различные побочные эффекты, | Результатом запуска программы через {{prg|sudo}} могут стать различные побочные эффекты, | ||
связанные со сменой владельца у файлов в домашнем каталоге пользователя, | связанные со сменой владельца у файлов в домашнем каталоге пользователя, | ||
вплоть до невозможности | вплоть до невозможности залогиниться из-за прав на .ICEauthority. | ||
'''Запрещается''' явное использование kdesu. Родные приложения KDE* пользуются KDE-специфическими расширениями | '''Запрещается''' явное использование kdesu. Родные приложения KDE* пользуются KDE-специфическими расширениями | ||
X-KDE-RootOnly=true X-KDE-SubstituteUID=true, а сами утилиты kdesu сейчас не находится в $PATH. | X-KDE-RootOnly=true X-KDE-SubstituteUID=true, а сами утилиты kdesu сейчас не находится в $PATH. | ||
'''Запрещается''' явное использование xdg-su. Утилита xdg-su устарела и исключена апстримом xdg-utils. Рекомендуется мигрировать на PolicyKit или временно заменять на beesu/gksu (только с явным указанием зависимости). | |||
=== Рекомендуется PolicyKit === | |||
pkexec <app> в .desktop файле + файл конфигурации policy kit в пакете. | pkexec <app> в .desktop файле + файл конфигурации policy kit в пакете. | ||
=== Допускается === | |||
Допускается только при условии явного указания зависимости на утилиту. | Допускается только при условии явного указания зависимости на утилиту. | ||
Строка 99: | Строка 98: | ||
* использование consolehelper напрямую либо использование beesu. Преимущества: можно гибко настраивать средствами pam, в частности, запоминать пароли с помощью pam0_timestamp. | * использование consolehelper напрямую либо использование beesu. Преимущества: можно гибко настраивать средствами pam, в частности, запоминать пароли с помощью pam0_timestamp. | ||
* для GTK приложений: допускается gksu. (Преимущества: запоминает пароли, | * для GTK приложений: допускается gksu. (Преимущества: тоже запоминает пароли, такж. поддерживает sudo). | ||
=== Ресурсы === | |||
* http://fedoraproject.org/wiki/Features/PolicyKitOne | * http://fedoraproject.org/wiki/Features/PolicyKitOne |
Текущая версия от 16:58, 12 февраля 2013
Версия 1.0
Общие требования
- .desktop файл должен быть оформлен в соответствии с Desktop Entry Specification
- .desktop файл, не предназначенный для установки в меню (например, чистый обработчик mime-type), должен иметь NoDisplay=true.
- Если приложение может открывать другие файлы, то в MimeType= должны быть указаны MIME-типы допустимых файлов, а в Exec= должен быть указан тип аргумента с помощью Recognized field code (%U, %F, и т. д.), см. .desktop mime types
- .desktop файл, предназначенный для установки в меню, должен иметь заполненным поле Categories.
- в поле Categories обязательно должна быть указана одна главная (Main) категория из списка Registered Categories и одна вторичная (Secondary). Некоторые вторичные категории требуют указывать еще одну вторичную категорию, см. стандарт.
Замечание: там, где это возможно — например, в приложениях KDE/GNOME — надо использовать %U, а не %F. А то у нас OO.org из-за такой опечатки не открывал файлы с сетевых ресурсов.
Замечание: для проверки .desktop файлов используется стандартная утилита desktop-file-validate. Однако код проверки категорий реализован там недостаточно хорошо, поэтому к сообщениям этой утилиты надо относиться с рассуждением. Если вывод утилиты кажется вам ошибочным, сообщайте: это, возможно, баг.
Также иногда может быть тяжело поместить приложение в меню, используя только стандартные категории. В таком случае можно обсудить с майнтейнерами системного freedesktop menu поддержку дополнительной вторичной пользовательской категории, начинающейся на X-. Например, X-Typing.
Типичные проблемы в desktop-файлах
- Ключ Encoding устарел, его нужно удалять. Теперь Encoding всегда UTF-8.
- пиктограмму надо указывать без расширения (если это не абсолютный путь).
Требует решения в freedesktop policy
Известны примеры, когда стандартная утилита desktop-file-validate, судя по всему, ошибается. Подобные случаи надо вешать на desktop-file-utils.
Документация
Для добавления в меню документации не рекомендуется использовать Type=Link, так как не все меню отображают его корректно. Вместо этого рекомендуется воспользоваться Type=Application и в поле Exec открыть нужный документ с помощью xdg-open:
[Desktop Entry] Version=1.0 Type=Application Name=GNU Documentation Comment=Manuals and other non-technical ducuments (html format, in Russian) from GNU Project Icon=howto Exec=xdg-open /usr/share/doc/doc-gnu-ru/HTML/index.html Categories=Development;Documentation;
Приложения
Дополнительные поддерживаемые категории
Категория | описание | Дополнительно указывать |
---|---|---|
X-Typing | Обучение набору клавиатуры | Education; |
X-Desktop | Утилиты рабочего стола, не являющиеся апплетами (Applet;) | Utility; |
X-ALTLinux-VideoSettings | Настройки монитора, видеокарты, Х-сервера... | Settings;HardwareSettings; |
X-PersonalSettings | Настройки персональные | Settings; |
Запуск программ из меню с повышением прав
Policy Draft v1.0 (Предложения к расширению полиси)
Чего делать нельзя
Запрещается писать sudo в .desktop файле так как sudo для этого не предназначено. Результатом запуска программы через sudo могут стать различные побочные эффекты, связанные со сменой владельца у файлов в домашнем каталоге пользователя, вплоть до невозможности залогиниться из-за прав на .ICEauthority.
Запрещается явное использование kdesu. Родные приложения KDE* пользуются KDE-специфическими расширениями X-KDE-RootOnly=true X-KDE-SubstituteUID=true, а сами утилиты kdesu сейчас не находится в $PATH.
Запрещается явное использование xdg-su. Утилита xdg-su устарела и исключена апстримом xdg-utils. Рекомендуется мигрировать на PolicyKit или временно заменять на beesu/gksu (только с явным указанием зависимости).
Рекомендуется PolicyKit
pkexec <app> в .desktop файле + файл конфигурации policy kit в пакете.
Допускается
Допускается только при условии явного указания зависимости на утилиту.
- использование consolehelper напрямую либо использование beesu. Преимущества: можно гибко настраивать средствами pam, в частности, запоминать пароли с помощью pam0_timestamp.
- для GTK приложений: допускается gksu. (Преимущества: тоже запоминает пароли, такж. поддерживает sudo).
Ресурсы
Policy Draft v1.1 (Предложения к расширению полиси)
Нейтральность относительно DE
.desktop файл позволяет указывать, в меню каких оконных менеджеров их показывать с помошью OnlyShowIn= и NotShowIn=. Рекомендуется не пользоваться этими тегами, поскольку они имеют абсолютную силу. Вместо этого для сокрытия .desktop файлов рекомендуется пользоваться средствами настройки общесистемного меню в WM/DE, описанными в Menu_Policy.