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

Apr 19 2015

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

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

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

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

回答

5 JacobVlijm Apr 19 2015 at 09:43

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

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

代替リストを設定するには(正しい形式を使用している場合):

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

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

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

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