
Мне было интересно, как Ubuntu может определить правильное имя приложения. Например, когда вы выбираете Open with -> Other application
из контекстного меню, вам предоставляется этот список.
Как разработчик может научить Ubuntu имя своего приложения, и как другой разработчик может получить имя приложения из системы? Мне не нужен реальный код, мне просто интересна концептуальная сторона вещей.
решение1
Это указано в заявкефайл записи рабочего стола. Файлы записи рабочего стола — это лаунчеры для приложения (тот же формат файла, что и лаунчеры, которые вы можете создать на своем рабочем столе), которые также содержат различные метаданные. Когда приложение устанавливается, эти файлы записи рабочего стола помещаются в /usr/share/applications, и я думаю, что их содержимое также кэшируется для повышения скорости.
Важная часть данных, определяемая здесь, — это список типов MIME, которые приложение может открыть. Это определяется в ключе 'MimeType' в файле записи рабочего стола. Например, GIMP имеет следующее в своей записи рабочего стола:
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;image/x-wmf;
Здесь указывается список типов файлов, которые может открыть GIMP.
Имя приложения указывается с помощью клавиши «Имя», например.
Name=GIMP Image Editor
Как вы видите, рядом с именами есть значки. Они также указаны в файле записи рабочего стола как имя значка (для которого правильный файл ищется в теме значков) или путь к файлу значка. В GIMP есть следующее:
Icon=gimp
В диалоговом окне «Открыть с помощью -> Другое приложение» рекомендуемыми приложениями являются приложения, которые указывают, что они могут открывать данный тип файлов, а другими приложениями — те, которые этого не делают.
Когда вы выбрали приложение, файловый менеджер ищет, как запустить приложение, чтобы открыть файл(ы). Он ищет клавишу 'Exec' в записи рабочего стола. GIMP имеет следующую клавишу Exec:
Exec=gimp-2.6 %U
Это означает, что команда:
gimp-2.6 %U
будет запущен для открытия файла(ов) с %U
заменой на список URL-адресов (обычно file:// url), представляющих файлы, которые были выбраны для открытия. В дополнение к '%U', приложение может использовать '%u' для одного URL-адреса или '%f'/'%F' для одного/нескольких путей к файлам.
решение2
Это довольно просто. Есть файлы .desktop, которые содержат эту информацию:
[Desktop Entry]
Name=Image Viewer
Comment=Browse and rotate images
Exec=eog %U
Type=Application
Categories=GNOME;GTK;Graphics;RasterGraphics;Viewer;
MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/pjpeg;image/png;image/tiff;image/x-bmp;image/x-gray;image/x-icb;image/x-ico;image/x-png;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-xbitmap;image/x-xpixmap;image/x-pcx;image/svg+xml;image/svg+xml-compressed;image/vnd.wap.wbmp;
Вы можете увидеть их в /usr/share/applications