根据官方文档:
为了将您的启动器添加到左侧的 Unity Launcher,请选择它并将其拖到启动器面板上。或者,您可以将 .desktop 文件放在 /usr/share/applications/ 或 ~/.local/share/applications/ 中。将文件移动到那里后,在 Dash 中搜索它(Windows 键 -> 键入应用程序名称)并将其拖放到 Unity Launcher。现在您的启动器(.desktop 文件)已锁定在 Unity Launcher 上!
这意味着您可以通过“拖放”手动添加启动器。但是,可以通过编程方式执行此操作吗?
我可以解释一下我为什么问这个问题:
我有自己的脚本,它会下载最新版本的 Eclipse IDE,创建 eclipse.desktop 文件,而无需与用户进行交互。
最后一步,我想将 Eclipse.desktop 文件添加到 Unity Launcher,但我不想让用户这样做。
我分析了*.desktop 文件的规格并得到了答案。
请提供建议。
答案1
我实际上为此编写了一个脚本。它将图标放在启动器中,但只需稍加改动,您也可以将其放在顶部(或任何其他位置)。
事实上,它是在 python2 中,但#!/usr/bin/env python3
如果您想将其用作 python3,只需将 shebang 更改为。代码是相同的。
要使用它,.desktop 文件需要位于 或/usr/share/applications
中~/.local/share/applications
,但通常情况就是这样。
如何使用
- 复制以下脚本,保存为
launcher_add.py
- 使其可执行
通过命令运行:
/path/to/launcher_add.py name_of_desktopfile.desktop
你必须使用文件名.desktop 文件的,不带路径。
剧本
#!/usr/bin/env python
import subprocess
import sys
desktopfile = sys.argv[1]
def current_launcher():
get_current = subprocess.check_output(["gsettings", "get", "com.canonical.Unity.Launcher", "favorites"]).decode("utf-8")
return eval(get_current)
def add_new(desktopfile):
curr_launcher = current_launcher()
last = [i for i, x in enumerate(curr_launcher) if x.startswith("application://")][-1]
new_icon = "application://"+desktopfile
if not new_icon in curr_launcher:
curr_launcher.insert(last, new_icon)
subprocess.Popen(["gsettings", "set", "com.canonical.Unity.Launcher","favorites",str(curr_launcher)])
else:
pass
add_new(desktopfile)
该脚本可防止启动器列表中出现同一应用程序的多次出现,从而导致列表损坏。