web-dev-qa-db-ja.com

コマンドラインからUnityランチャーにアプリケーションを追加/削除するにはどうすればよいですか?

UCK(Ubuntu Customization Kit)を使用してUbuntu 14.04 Live CDをカスタマイズしています。このプログラムは、ターミナルでchroot環境を提供して変更を加えます。

ドックに表示されるプログラムを追加および削除したい。

.desktopファイルを変更することでこれが達成できるかどうかわかりませんか?

ターミナルを使用してこれをどのように行うことができますか?

6
Aaron Salyer

以下のスクリプトは、引数に応じて、ランチャーにアイテムを追加または削除するために使用できます。

#!/usr/bin/env python3

import subprocess
import sys

desktopfile = sys.argv[1]

def current_launcher():
    get_current = subprocess.check_output(["gsettings", "get", "com.canonical.Unity.Launcher", "favorites"]).decode("utf-8")
    return eval(get_current)

def set_launcher(desktopfile):
    curr_launcher = current_launcher()
    last = [i for i, x in enumerate(curr_launcher) if x.startswith("application://")][-1]
    new_icon = "application://"+desktopfile
    if sys.argv[2] == "a":
        if not new_icon in curr_launcher:
            curr_launcher.insert(last, new_icon)
            subprocess.Popen(["gsettings", "set", "com.canonical.Unity.Launcher","favorites",str(curr_launcher)])
    Elif sys.argv[2] == "r":
        curr_launcher.remove(new_icon)
        subprocess.Popen(["gsettings", "set", "com.canonical.Unity.Launcher","favorites",str(curr_launcher)])

set_launcher(desktopfile)

実行方法

  1. コードを空のファイルに貼り付け、set_launcher.pyとして保存します
  2. 次のコマンドで実行します:

    python3 /path/to/set_launcher.py <name_of_.desktop_file> a
    

    アイコンを追加する、または:

    python3 /path/to/set_launcher.py <name_of_.desktop_file> r
    

    アイコンを削除するには

    例:

    python3 /path/to/set_launcher.py gedit.desktop a
    

    geditをランチャーに追加するか、または

    python3 /path/to/set_launcher.py gedit.desktop r
    

    ランチャーからgeditを削除するには

説明

ランチャーアイコンのリストは、キーで定義されます。

com.canonical.Unity.Launcher favorites

コマンドで取得できます:

gsettings get com.canonical.Unity.Launcher favorites

set代替リスト(正しい形式を使用しているという事実を考慮):

gsettings set com.canonical.Unity.Launcher favorites "[item1, item2, etc]"

.desktopファイルを編集してこれを達成できますか?

いいえ、ファイル自体とは関係ありません。重要なのは、ファイルがランチャーのお気に入りのリストにあるかどうかです。

このリストをコマンドラインから編集することは、まさにスクリプトの機能です。

4
Jacob Vlijm