web-dev-qa-db-ja.com

ユニティランチャーアイコンの順序を自動化する

インストールプロセスを自動化するインストールスクリプトを作成しました。その後、ユニティランチャーのアイコンを再配置/追加/削除したいと思います。

dconf watch /を使用すると、アイコンを並べ替えると出力が表示されます。これを行うためのコマンドラインの方法はありますか?おそらくgsettingsで?

2
myol

前書き

以下の単純なスクリプトでは、ファイルを引数として使用し、ランチャーを設定して、ファイルに表示されるプログラムへのショートカット(行ごとに1つ)を設定します。

基本的な考え方は、ランチャーアイコンは実際には.desktopファイルへのリンクであり(表示される場合はどこでも)、ランチャーアイテムを設定する標準的な方法は次のコマンドを実行することです。

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

多くのアイテムを追加したい場合、これは退屈になり、引用は苦痛になります。いつでも目的のプログラムを開き、アイコンを右クリックして「ランチャーにロック」オプションを呼び出すことができますが、大量のアイテムを処理する場合は実用的でもありません。

ここでのアプローチは、ファイルを1行に1回読み取り、コマンドテキストを作成して実行するだけです。これは、上記のgsettings setコマンドを実行することと違いはありませんが、ハードワークが自動的に行われます。

使用法:

スクリプトを実行するには、ファイルに保存し、chmod +x /path/to/scriptで実行可能にして、次のように実行します。

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

入力ファイルには、/usr/share/applications/firefox.desktopなど、ランチャーに追加するアイテムへのフルパスが含まれている必要がありますが、必須ではありません。firefox.desktopを含む行でも問題ありません。

デモ

スクリプトを実行する前に

enter image description here

スクリプト実行後

enter image description here

順序は、入力ファイルに表示されるエントリとまったく同じであることに注意してください

スクリプトソース

#!/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)
2