我搜索了 supermeatboy 的 .desktop 文件,因为它不在 /usr/share/applications/ 中。所以我使用了终端:
chocobai@desktoppc:/$ locate *.desktop | grep -iR "meat"
/home/chocobai/.gnome/apps/supermeatboy_com-supermeatboy_1.desktop
/home/chocobai/.local/share/applications/supermeatboy_com-supermeatboy_1.desktop
/home/chocobai/.supermeatboygame/.mojosetup/supermeatboy_com-supermeatboy_1.desktop
我猜安装程序这样做是为了向后兼容。Unity 如何处理这些文件?具体来说,它监视哪些文件夹?为什么它们不需要可执行?为什么不只有一个像 /usr/share/applications/ 这样的文件夹来保存 .desktop 文件?
我发现了许多类似问题的答案,听起来像
“它应该在 /usr/share/applications 中,但如果它不在那里,只需在终端中输入...”
等等。但这并没有回答 Unity 如何处理(查找、搜索)这些文件的问题。提前致谢。
答案1
它监视哪些文件夹?
通常 Unity 会在/usr/share/applications
和中搜索 .desktop 文件~/.local/share/applications
。但也有其他目录包含 .desktop 文件,例如/etc/xdg/autostart
)
为什么它们不需要可执行?
这些文件不需要是可执行文件,因为这些文件包含执行其他文件的指令。有一行可以Exec=.....
完成这项工作。
为什么没有像 /usr/share/applications/ 这样的文件夹来保存 .desktop 文件?
因为,它可以提供更大的灵活性来分离用户程序和系统程序。您可以安装软件或为特定软件定制选项,而不会损害所有其他用户或修改默认选项。
主目录中的 .desktop 文件比系统目录(例如 /usr/share/applications)中的文件具有更高的优先级。因此,如果您自定义 .desktop 文件以使其不显示在 KDE 菜单中,并在主目录(~/.local/share/applications)中创建同名的 .desktop 文件,则 .desktop 文件中的选项将覆盖系统选项,并且该应用程序将不会显示在 KDE 菜单中。