我正在使用 Ubuntu 22.04 LTS (GNOME 42.5),正在摆弄应用程序图标。我注意到.desktop
在不同的文件中有一些几乎相同的文件。例如,文件和bluetooth-sendto.desktop
都存在于目录 中。这两个文件的内容如下:/usr/share/applications/
~/.gnome/apps/
/usr/share/applications/bluetooth-sendto.desktop
[Desktop Entry]
Name=Bluetooth Transfer
Comment=Send files via Bluetooth
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=bluetooth
Exec=bluetooth-sendto
Terminal=false
Type=Application
Categories=GTK;GNOME;Utility;FileTools;
StartupNotify=true
NoDisplay=true
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-bluetooth
X-GNOME-Bugzilla-Component=sendto
X-GNOME-Bugzilla-Version=3.34.5
X-Ubuntu-Gettext-Domain=gnome-bluetooth2
~/.local/share/applications/bluetooth-sendto.desktop
[Desktop Entry]
Version=1.1
Type=Application
Name=Bluetooth Transfer
Comment=Send files via Bluetooth
Icon=bluetooth
Exec=bluetooth-sendto
Actions=
Categories=FileTools;GNOME;GTK;Utility;
StartupNotify=true
~/.gnome/apps/bluetooth-sendto.desktop
[Desktop Entry]
Version=1.1
Type=Application
Name=Bluetooth Transfer
Comment=Send files via Bluetooth
Icon=bluetooth
Exec=bluetooth-sendto
Actions=
Categories=FileTools;GNOME;GTK;Utility;
StartupNotify=true
OnlyShowIn=Old;
由于有多个文件基本上执行相同的操作,因此我有两个问题:
- 第二和第三个是否被认为是“过时的”或者它们仅仅是为了实现某种向后兼容性而存在?
- 哪个文件受控制
menulibre
?
答案1
任何 XDG 兼容桌面中的菜单系统都会.desktop
在特定目录中搜索启动器以构建应用程序菜单。这些目录是和环境变量中列出的每个目录下的~/.local/share/applications
任何目录。如果这些目录中存在同名文件,则将使用遇到的第一个文件。因此,例如,将使用 文件,而不是。此机制允许使用为当前用户定制的启动器覆盖系统范围内安装的启动器。applications
XDG_DATA_DIRS
~/.local/share/applications/firefox.desktop
/usr/share/applications/firefox.desktop
NoDisplay
设置为 的文件true
将不会包含在应用程序菜单中。您的第一个/usr/share/applications/bluetooth-sendto.desktop
启动器就是这种情况。~/.local/share/applications/bluetooth-sendto.desktop
没有该指令。 因为 的默认值NoDisplay
是true
,所以该启动器应该会导致显示菜单项。
- 第二和第三个是否被认为是“过时的”或者它们仅仅是为了实现某种向后兼容性而存在?
第二个是您登录时使用的。第一个是系统范围的,即,如果用户没有私人的,则将使用它。第三个不在菜单系统的搜索路径中,至少在默认的 Ubuntu 系统上不是。
- 哪个文件由 menulibre 控制?
如果您.desktop
在 menulibre 中更改文件,更改将始终存储在 中~/.local/share/applications
。如果.desktop
启动器已存在,更改将添加到该文件。如果系统范围的启动器已生效,则使用 menulibre 所做的更改将存储在 下的副本中~/.local/share/applications
。