web-dev-qa-db-ja.com

gsettingsの編集。コマンドでランチャーにアイコンを追加します

この問題に関するインターネット上の投稿がいくつかありますが、解決策はまだ見つかりませんでした。
私の目標は、Unityランチャーにアイコン(.desktopファイル)を追加してすぐに表示するコマンドを見つけることです。 dconf-editor(デスクトップ>ユニティ>ランチャー)を開いてアイテムをお気に入りリストに追加すると、ランチャーに一度に表示されるので、コマンドで同じことを実行できるようにする必要があります。インターネットでこれまでに見つけた解決策は役に立たない。

作業中のクイックリストエディターで使用するには、コマンドで実行する必要があります。

手伝うことができたら信じられないほど幸せになります

9
Jacob Vlijm

Gsettingsツールでもdconfを操作できます。

gsettings set com.canonical.Unity.Launcher favorites "$(gsettings get com.canonical.Unity.Launcher favorites | sed "s/, *'yourapp' *//g" | sed "s/'yourapp' *, *//g" | sed -e "s/]$/, 'yourapp']/")"
12
jasmines

受け入れられた答えは申し分ありませんが、sedと多くのエスケープシーケンスを使用しているため面倒です。以下のPythonicソリューションは非常にクリーンで、追加する.desktopファイルを簡単に指定でき、オプションでランチャー上の位置を指定できます。

例えば、

python launcher_append_item.py sakura.desktop 3  

sakuraを4番目のアイコンとして配置します(リストのインデックスが0で始まるため)。単純に実行する

python launcher_append_item.py sakura.desktop  

リストにアイコンを追加します。

さらに考えてみると、ランチャーの特定のアイテムを他のアイテムに置き換えるオプションを追加することもできます。しかし、それは将来の熟考のための練習です:)

ソースコード

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gio,Gtk
import dbus
import sys

def gsettings_get(schema,path,key):
    if path is None:
        gsettings = Gio.Settings.new(schema)
    else:
        gsettings = Gio.Settings.new_with_path(schema,path)
    return gsettings.get_value(key)

def gsettings_set(schema,path,key,value):
    if path is None:
        gsettings = Gio.Settings.new(schema)
    else:
        gsettings = Gio.Settings.new_with_path(schema,path)
    return gsettings.set_strv(key,value)


current_list = list(gsettings_get('com.canonical.Unity.Launcher',None,'favorites'))

if sys.argv[2]:
   current_list.insert(int(sys.argv[2]),'application://' + sys.argv[1])
else:
   current_list.append(  'application://' + sys.argv[1]  )

gsettings_set( 'com.canonical.Unity.Launcher', None, 'favorites',current_list  )
2