自动将我的启动器添加到 Unity Launcher。如何操作?

自动将我的启动器添加到 Unity Launcher。如何操作?

根据官方文档:

为了将您的启动器添加到左侧的 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)

该脚本可防止启动器列表中出现同一应用程序的多次出现,从而导致列表损坏。

相关内容