我想知道 Ubuntu 如何找出应用程序的正确名称。例如,当您Open with -> Other application从上下文菜单中选择时,您会看到此列表。

开发人员如何教 Ubuntu 应用程序的名称,另一个开发人员如何从系统中检索应用程序的名称?我不需要实际的代码,我只是对事物的概念方面感兴趣。
这是在应用程序的桌面入口文件中指定的。桌面入口文件是应用程序的启动器(与您可以在桌面上创建的启动器的文件格式相同),其中还包含各种元数据。安装应用程序时,这些桌面条目文件会放在 /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;
Run Code Online (Sandbox Code Playgroud)
这指定了 GIMP 可以打开的文件类型列表。
应用程序名称使用“名称”键指定,例如。
Name=GIMP Image Editor
Run Code Online (Sandbox Code Playgroud)
如您所见,名称旁边有图标。这些也在桌面条目文件中指定为图标名称(从图标主题中查找正确的文件)或图标文件路径。GIMP 具有以下功能:
Icon=gimp
Run Code Online (Sandbox Code Playgroud)
在“打开方式 -> 其他应用程序”对话框中,推荐的应用程序是指定它们能够打开文件类型的应用程序,而其他应用程序是那些没有的应用程序。
选择应用程序后,文件管理器会查找如何运行该应用程序以打开文件。它在桌面条目中查找“Exec”键。GIMP 有以下 Exec 键:
Exec=gimp-2.6 %U
Run Code Online (Sandbox Code Playgroud)
这意味着命令:
gimp-2.6 %U
Run Code Online (Sandbox Code Playgroud)
将运行以打开文件,并%U替换为代表已选择打开的文件的 URL 列表(通常为 file:// url)。除了 '%U' 之外,应用程序可以将 '%u' 用于单个 url 或 '%f'/'%F' 用于单个/多个文件路径。