Desktop Menu Entry Policy: различия между версиями
(Баг 25413 имеет отношение только к wine, поэтому, xdg-open вместо url_handler.sh) |
|||
(не показано 30 промежуточных версий 5 участников) | |||
Строка 1: | Строка 1: | ||
{{ | {{Policy | ||
| | |since_branch=6.0 | ||
| | |responsible=Igor Vlasenko | ||
}} | }} | ||
'''Версия 1.0''' | |||
== Общие требования == | == Общие требования == | ||
* .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), должен иметь | * .desktop файл, не предназначенный для установки в меню (например, чистый обработчик mime-type), должен иметь NoDisplay=true. | ||
* Если приложение может открывать другие файлы, то в MimeType= должны быть указаны MIME типы допустимых файлов, а в Exec= должен быть указан тип аргумента с помощью Recognized field code (%U, %F, и т. д.), см. [http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#mime-types .desktop mime types] | * Если приложение может открывать другие файлы, то в 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 стандарт]. | ||
Замечание: там, где это возможно | Замечание: там, где это возможно — например, в приложениях KDE/GNOME — надо использовать %U, а не %F. | ||
А то у нас OO.org из-за такой опечатки не открывал файлы с сетевых ресурсов. | А то у нас OO.org из-за такой опечатки не открывал файлы с сетевых ресурсов. | ||
Замечание: для проверки .desktop файлов используется стандартная утилита desktop-file-validate. Однако | Замечание: для проверки .desktop файлов используется стандартная утилита desktop-file-validate. Однако код проверки категорий реализован там недостаточно хорошо, поэтому к сообщениям этой утилиты надо относиться с рассуждением. Если вывод утилиты кажется вам ошибочным, сообщайте: это, возможно, баг. | ||
возможно, баг. | |||
Также | Также иногда может быть тяжело поместить приложение в меню, используя только стандартные категории. В таком случае можно обсудить с майнтейнерами системного freedesktop menu поддержку дополнительной вторичной пользовательской категории, начинающейся на X-. Например, X-Typing. | ||
системного freedesktop menu поддержку дополнительной вторичной пользовательской категории, начинающейся на X-. Например, X- | |||
=== Типичные проблемы в desktop-файлах === | |||
* Ключ Encoding устарел, его нужно удалять. Теперь Encoding всегда UTF-8. | |||
* пиктограмму надо указывать без расширения (если это не абсолютный путь). | |||
=== Требует решения в freedesktop policy === | === Требует решения в freedesktop policy === | ||
Известны примеры, когда стандартная утилита desktop-file-validate, судя по всему, ошибается. | |||
Подобные случаи надо | Подобные случаи надо вешать на {{pkg|desktop-file-utils}}. | ||
=== Документация === | === Документация === | ||
Для добавления в меню документации не рекомендуется использовать Type=Link, так как не все меню отображают его корректно. | Для добавления в меню документации не рекомендуется использовать Type=Link, так как не все меню отображают его корректно. | ||
Вместо этого рекомендуется воспользоваться Type=Application и в поле Exec открыть нужный документ с помощью | Вместо этого рекомендуется воспользоваться Type=Application и в поле Exec открыть нужный документ с помощью | ||
{{cmd| | {{cmd|xdg-open}}: | ||
<pre> | <pre> | ||
[Desktop Entry] | [Desktop Entry] | ||
Строка 42: | Строка 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> | ||
== Приложения == | |||
=== Дополнительные поддерживаемые категории === | |||
{| class="standard" | |||
|- | |||
!Категория | |||
!описание | |||
!Дополнительно указывать | |||
|- | |||
|X-Typing | |||
|Обучение набору клавиатуры | |||
|Education; | |||
|- | |||
|X-Desktop | |||
|Утилиты рабочего стола, не являющиеся апплетами (Applet;) | |||
|Utility; | |||
|- | |||
|X-ALTLinux-VideoSettings | |||
|Настройки монитора, видеокарты, Х-сервера... | |||
|Settings;HardwareSettings; | |||
|- | |||
|X-PersonalSettings | |||
|Настройки персональные | |||
|Settings; | |||
<!-- |- | |||
|Literature | |||
|Чтение электронных книг | |||
|Office;Viewer; --> | |||
|} | |||
== Запуск программ из меню с повышением прав == | |||
'''Policy Draft v1.0 (Предложения к расширению полиси)''' | |||
=== Чего делать нельзя === | |||
'''Запрещается''' писать {{cmd|sudo}} в .desktop файле так как sudo для этого не предназначено. | |||
Результатом запуска программы через {{prg|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). | |||
=== Ресурсы === | |||
* http://fedoraproject.org/wiki/Features/PolicyKitOne | |||
* http://lists.freedesktop.org/archives/hal/2006-March/004770.html | |||
== Policy Draft v1.1 (Предложения к расширению полиси) == | |||
=== Нейтральность относительно DE === | |||
.desktop файл позволяет указывать, в меню каких оконных менеджеров их показывать с помошью OnlyShowIn= и NotShowIn=. | |||
Рекомендуется не пользоваться этими тегами, поскольку они имеют абсолютную силу. | |||
Вместо этого для сокрытия .desktop файлов рекомендуется пользоваться средствами настройки общесистемного меню в WM/DE, описанными в [[Menu_Policy]]. |
Текущая версия от 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.