Desktop Menu Entry Policy: различия между версиями

Материал из ALT Linux Wiki
(Баг 25413 имеет отношение только к wine, поэтому, xdg-open вместо url_handler.sh)
 
(не показано 9 промежуточных версий 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= должен быть указан тип аргумента с помощью 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 стандарт].
* в поле {{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.
Замечание: там, где это возможно — например, в приложениях KDE/GNOME — надо использовать %U, а не %F.
А то у нас OO.org из-за такой опечатки не открывал файлы с сетевых ресурсов.
А то у нас OO.org из-за такой опечатки не открывал файлы с сетевых ресурсов.


Строка 32: Строка 32:
Для добавления в меню документации не рекомендуется использовать Type=Link, так как не все меню отображают его корректно.
Для добавления в меню документации не рекомендуется использовать Type=Link, так как не все меню отображают его корректно.
Вместо этого рекомендуется воспользоваться Type=Application и в поле Exec открыть нужный документ с помощью  
Вместо этого рекомендуется воспользоваться Type=Application и в поле Exec открыть нужный документ с помощью  
{{cmd|url_handler.sh}}:
{{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=url_handler.sh /usr/share/doc/doc-gnu-ru/HTML/index.html
Exec=xdg-open /usr/share/doc/doc-gnu-ru/HTML/index.html
Categories=Development;Documentation;
Categories=Development;Documentation;
</pre>
</pre>
теоретически, надо пользоваться {{prg|xdg-open}}, но пока этому мешают баги
[https://bugzilla.altlinux.org/show_bug.cgi?id=25413 #25413].


== Приложения ==
== Приложения ==
Строка 75: Строка 73:
|}
|}


== Policy Draft v1.0 (Предложения к расширению полиси) ==
== Запуск программ из меню с повышением прав ==
'''Policy Draft v1.0 (Предложения к расширению полиси)'''


=== Запуск программ с повышением прав ===
=== Чего делать нельзя ===
 
==== Нельзя ====


'''Запрещается''' писать {{cmd|sudo}} в .desktop файле так как sudo для этого не предназначено.
'''Запрещается''' писать {{cmd|sudo}} в .desktop файле так как sudo для этого не предназначено.
Результатом запуска программы через {{prg|sudo}} могут стать различные побочные эффекты,
Результатом запуска программы через {{prg|sudo}} могут стать различные побочные эффекты,
связанные со сменой владельца у файлов в домашнем каталоге пользователя,
связанные со сменой владельца у файлов в домашнем каталоге пользователя,
вплоть до невозможности залоиниться из-за прав на .ICEauthority.
вплоть до невозможности залогиниться из-за прав на .ICEauthority.
 
'''Запрещается''' явное использование kdesu. Родные приложения KDE* пользуются KDE-специфическими расширениями
X-KDE-RootOnly=true X-KDE-SubstituteUID=true, а сами утилиты kdesu сейчас не находится в $PATH.


'''Запрещается''' явное использование kdesu, Родные приложения KDE* пользуются KDE-специфическими расширениями
'''Запрещается''' явное использование xdg-su. Утилита xdg-su устарела и исключена апстримом xdg-utils. Рекомендуется мигрировать на PolicyKit или временно заменять на beesu/gksu (только с явным указанием зависимости).
X-KDE-RootOnly=true
X-KDE-SubstituteUID=true
а сами иутилиты kdesu сейчас не находится в $PATH.


==== Рекомендуется PolicyKit ====
=== Рекомендуется PolicyKit ===


pkexec <app> в .desktop файле + файл конфигурации policy kit в пакете.
pkexec <app> в .desktop файле + файл конфигурации policy kit в пакете.


==== Допускается ====
=== Допускается ===


Допускается только при условии явного указания зависимости на утилиту.
Допускается только при условии явного указания зависимости на утилиту.
Строка 101: Строка 98:
* использование consolehelper напрямую либо использование beesu. Преимущества: можно гибко настраивать средствами pam, в частности, запоминать пароли с помощью pam0_timestamp.
* использование consolehelper напрямую либо использование beesu. Преимущества: можно гибко настраивать средствами pam, в частности, запоминать пароли с помощью pam0_timestamp.


* для GTK приложений: допускается gksu (Преимущества: запоминает пароли, тж. поддерживает sudo).
* для GTK приложений: допускается gksu. (Преимущества: тоже запоминает пароли, такж. поддерживает sudo).
 
* для родных KDE4 и KDE3 приложений: kdesu; условие явной зависимости на kdesu можно опустить (из-за зависимостей на kdebase).
 
Использование xdg-su устарело. Рекомендуется мигрировать на PolicyKit или временно заменять на beesu/gksu (только с явным указанием зависимости).


==== Ресурсы ====
=== Ресурсы ===


* http://fedoraproject.org/wiki/Features/PolicyKitOne
* http://fedoraproject.org/wiki/Features/PolicyKitOne

Текущая версия от 16:58, 12 февраля 2013

Stamp90cw.png
Действующая политика Sisyphus

Политика действует, начиная со стабильного бранча 6.0 и выше.

Ответственный за проведение политики в жизнь — Igor Vlasenko.


Версия 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.