尽管互联网上有许多关于该主题的帖子,但我还没有找到解决方案:
我的目标是找到一个命令,将图标(.desktop 文件)添加到 Unity 启动器并立即显示它。当我打开dconf-editor
(桌面 > unity > 启动器)并将项目添加到收藏夹列表时,它会立即显示在启动器中,所以我的想法是必须可以通过命令执行相同的操作。到目前为止,我在互联网上找到的解决方案都不起作用。
我需要通过命令来执行此操作,以便在我正在使用的快速列表编辑器中使用。
如果你能帮助别人,你会让别人非常高兴
答案1
您也可以使用 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']/")"
答案2
可接受的答案是可以的,但由于使用了sed
大量转义序列,因此很麻烦。下面的 Python 解决方案更简洁,只需指定.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 )