我搜索了 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
Run Code Online (Sandbox Code Playgroud)
我猜安装程序这样做是因为向后兼容。Unity 如何处理这些文件?具体来说,它监视哪些文件夹?为什么它们不需要是可执行的?为什么不是只有一个像 /usr/share/applications/ 这样的文件夹来保存 .desktop 文件?
我找到了很多类似问题的答案,听起来像
“它应该在 /usr/share/applications 中,但如果它不在那里,只需在终端中输入......”
等等。但这从未回答 Unity 如何处理(查找、搜索)这些文件的问题。提前致谢。
它监视哪些文件夹?
通常 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 菜单上。