この問題に関するインターネット上の投稿がいくつかありますが、解決策はまだ見つかりませんでした。
私の目標は、Unityランチャーにアイコン(.desktopファイル)を追加してすぐに表示するコマンドを見つけることです。 dconf-editor
(デスクトップ>ユニティ>ランチャー)を開いてアイテムをお気に入りリストに追加すると、ランチャーに一度に表示されるので、コマンドで同じことを実行できるようにする必要があります。インターネットでこれまでに見つけた解決策は役に立たない。
作業中のクイックリストエディターで使用するには、コマンドで実行する必要があります。
手伝うことができたら信じられないほど幸せになります
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']/")"
受け入れられた答えは申し分ありませんが、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 )