Byt*_*der 8 unity launcher .desktop
在 Unity 桌面中,当我启动一个 GUI 应用程序时,它的图标会出现在启动器中(如果它还没有的话)。
现在,当我右键单击此图标时,我会得到选项Lock to Launcher或Unlock from Launcher,具体取决于应用程序是否已锁定到启动器。
我的问题是:
如果没有.desktop文件存在,当我单击这两个选项之一时,幕后会发生什么?
.desktop如果找不到,它是否可以自动创建简单文件,在什么情况下会发生这种情况,以及固定的启动器项目保存在哪里?
Jac*_*ijm 10
不确定这个答案是否足够深入“引擎盖下”,但这就是发生的事情:
可以通过以下命令获取Unity Launcher的当前内容:
gsettings get com.canonical.Unity.Launcher favorites
Run Code Online (Sandbox Code Playgroud)
它将生成一个列表,如下所示:
['application://extras-qlequicklisteditor.desktop', 'application://gedit.desktop', 'application://gnome-terminal.desktop', 'application://nautilus.desktop', 'application://firefox.desktop', 'application://thunderbird.desktop', 'application://gnome-screenshot.desktop', 'application://dconf-editor.desktop', 'application://virtualbox.desktop', 'application://gnome-tweak-tool.desktop', 'unity://running-apps', 'unity://devices', 'unity://expo-icon']
Run Code Online (Sandbox Code Playgroud)
列表中的提及显然是基于相应.desktop文件的名称。
现在,当您运行 GUI 应用程序时,当您在启动器中右键单击其图标并选择 时Lock to Launcher,当前选择的项目将添加到列表中,同时Unlock from Launcher将从列表中删除该项目。
重新阅读问题下方的(第一条)评论:如前所述,您可以通过以下命令获取当前的 Launcher 项目:
gsettings get com.canonical.Unity.Launcher favorites
Run Code Online (Sandbox Code Playgroud)
并通过命令设置一个可能的更改列表:
gsettings set com.canonical.Unity.Launcher favorites "[item1, item2, etc]"
Run Code Online (Sandbox Code Playgroud)
然后,您当然可以以编程方式编辑 Unity Launcher 的内容,就像这里所做的那样。
如果您在没有现有.desktop文件的情况下运行 GUI 应用程序,Unity 会在本地(在 中~/.local/share/applications)创建一个基本的应用程序,以可执行文件 ( application.desktop)命名。在该Exec=行中,您将找到运行的命令以调用应用程序。
如果您查看以.desktop这种方式创建的文件,它包含以下行:
X-UnityGenerated=true
Run Code Online (Sandbox Code Playgroud)
正如@muru(谢谢!)所提到的,在少数(似乎是例外)情况下,Unity 无法成功创建.desktop可执行文件的“丢失”文件。然而,我能找到的唯一例子是 Tkinter 窗口,它pid 0在wmctrl -lp.