自动化 Unity 启动器图标排序

自动化 Unity 启动器图标排序

我编写了一个安装脚本,可以自动执行安装过程。之后,我希望它重新排列/添加/删除 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)

相关内容