自动化统一启动器图标排序

我编写了一个安装脚本,可以自动完成安装过程。 之后我希望它重新排列/添加/删除统一启动器的图标。

使用dconf watch /我可以看到输出,因为我重新排序图标。 是否有命令行方式来执行此操作 – 可能使用gsettings

介绍

下面的简单脚本允许将文件作为参数,并将启动器设置为具有文件中出现的程序的任何快捷方式(每行一个)。

基本思想是启动器图标实际上是指向.desktop文件的链接(无论它们出现在何处),设置启动器项的规范方法是运行以下命令:

 gsettings set com.canonical.Unity.Launcher favorites "[ 'item1.desktop' , 'item2.desktop' , . . . 'item3.desktop; ]" 

如果你想添加很多项目,引用可能会变得很痛苦,这可能会变得乏味。 可以随时打开所需的程序并右键单击该图标以调用“锁定到启动器”选项,但是当您处理大量项目时这也不实用。

这里采用的方法是简单地读取一个文件,每行一次,构建命令文本,然后执行它。 这与运行上面的gsettings set命令没有什么不同,只是为您完成了艰苦的工作。

用法:

要运行脚本,请将其保存到文件中,使用chmod +x /path/to/script使其可执行并运行为

 python /path/to/script /path/to/file 

输入文件应该包含要添加到启动器的项目的完整路径,例如/usr/share/applications/firefox.desktop ,但是没有必要,使用firefox.desktop的行也可以。

演示

在运行脚本之前

在此处输入图像描述

运行脚本后

在此处输入图像描述

请注意,顺序与输入文件中显示的条目完全相同

脚本来源

 #!/usr/bin/env python # Author: Serg Kolo # Date: April 22, 2016 # Purpose: programmatically set Unity launcher items # by reading a file # Written for: http://askubuntu.com/q/760895/295286 # Tested on: Ubuntu 14.04 LTS import sys import subprocess command="""gsettings set com.canonical.Unity.Launcher favorites """ def run_command(cmd): p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) output = p.stdout.read().strip() return output items="" with open(sys.argv[1]) as file: for line in file: temp = "'" + line.strip().split('/')[-1] + "'" items = ",".join([items,temp]) items = '"[ ' + items[1:] + ' ]"' print run_command(command + " " + items)