インストールプロセスを自動化するインストールスクリプトを作成しました。その後、ユニティランチャーのアイコンを再配置/追加/削除したいと思います。
dconf watch /
を使用すると、アイコンを並べ替えると出力が表示されます。これを行うためのコマンドラインの方法はありますか?おそらくgsettings
で?
以下の単純なスクリプトでは、ファイルを引数として使用し、ランチャーを設定して、ファイルに表示されるプログラムへのショートカット(行ごとに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
を含む行でも問題ありません。
スクリプトを実行する前に
スクリプト実行後
順序は、入力ファイルに表示されるエントリとまったく同じであることに注意してください
#!/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)