自动化统一启动器图标排序
我编写了一个安装脚本,可以自动完成安装过程。 之后我希望它重新排列/添加/删除统一启动器的图标。
使用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)