我有一个.desktop
运行 shell 脚本的应用程序,当双击该应用程序时,这个 shell 脚本会运行一个 python 代码,我希望能够从我的笔记本电脑上的所有目录启动它,并且即使图像、图标或应用程序的目录发生了变化,也能保持图标的稳定!
我怎样才能使我的应用程序全球化?
答案1
从 Zany_Zachary 的回答中可以看出, 中的启动器/usr/share/applications
可供所有用户使用。 下的启动器~/.local/share/applications
仅供当前用户使用。 当启动器位于这些位置时,它将被您的桌面菜单或启动器拾取。 该位置/usr/share/applications
是操作系统的软件管理系统 APT 正在使用的目录,因此,尽管它可以工作,但您不应将自定义文件放在.desktop
那里。 相反,使用文件夹/usr/local/share/applications
。该文件夹在 Ubuntu 上默认不存在,因此您可能需要先创建它。
这就是标题中的“全局”最容易理解的方式。但是,在您的问题中,您建议在“全局”下您还理解“可移植”的含义,即即使图标或应用程序更改位置,它也应该继续工作。不过,您必须遵守操作系统的惯例来放置图标或可执行文件。因此,不存在无论.desktop
您将图标或可执行文件放在哪里都可以继续工作的“全局”启动器。
这种“可移植性”存在限制。首先,图标或可执行文件的名称不能更改,因为名称在文件中是硬编码的.desktop
。但是,您可以从文件中省略路径.desktop
,但您必须将图标和可执行文件放在操作系统搜索的特定位置。
图标
图标定义在.desktop
文件中就行了Icon=
。
如果你只提供图标的名称(不带扩展名),则操作系统将搜索 ~/.icons
首先搜索和~/.local/share/icons
,然后搜索系统范围内的图标目录(主要是/usr/share/icons
和)/usr/local/share/icons
。菜单系统将拾取这些文件夹中带有或.png
扩展名的图形文件.svg
。如果未找到相应的图形文件,系统将恢复为默认的后备图标。
应用程序
.desktop
可执行文件在该行文件中定义Exec=
。
此外,如果没有提供完整文件路径,系统将在预定义路径中搜索具有匹配名称的可执行文件。您可以使用该命令查看文件夹及其搜索顺序echo $PATH
。
答案2
问候!
要使您的 .desktop 文件全局化,只需:
将其放入/usr/share/applications
仅限一个帐户,将其放入/home/$USER/.local/share/applications
不幸的是,当图像文件移动时,您无法使图标保持不变。我建议创建一个包含应用程序图标的文件夹。将此文件夹放在 中/usr/share
。