我编写了一个安装脚本,可以自动执行安装过程。之后,我希望它重新排列/添加/删除 Unity 启动器的图标。
使用dconf watch /
我可以在重新排序图标时看到输出。有没有命令行方式可以做到这一点 - 可能用gsettings
?
答案1
介绍
下面的简单脚本允许将文件作为参数,并将启动器设置为在文件中显示程序的快捷方式(每行一个)。
基本思想是启动器图标实际上是.desktop
文件的链接(无论它们出现在哪里),设置启动器项的规范方法是运行以下命令:
gsettings set com.canonical.Unity.Launcher favorites "[ 'item1.desktop' , 'item2.desktop' , . . . 'item3.desktop; ]"
如果你想添加很多项目,这会变得很繁琐,引用也会很麻烦。你可以随时打开所需的程序,右键单击图标以调用“锁定到启动器”选项,但当你处理大量项目时,这也不实用。
这里采用的方法是简单地读取文件,每行 1 次,构建命令文本,然后执行它。这与运行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)