
インストール プロセスを自動化するインストール スクリプトを作成しました。その後、Unity ランチャーのアイコンを再配置/追加/削除したいと思います。
を使用するとdconf watch /
、アイコンを並べ替えたときに出力を確認できます。これを行うためのコマンド ラインの方法はありますかgsettings
?
答え1
導入
以下の簡単なスクリプトでは、ファイルを引数として受け取り、ファイル内に表示されるプログラムへのショートカット (1 行に 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)