编辑 gsettings;通过命令将图标添加到启动器

编辑 gsettings;通过命令将图标添加到启动器

尽管互联网上有许多关于该主题的帖子,但我还没有找到解决方案:
我的目标是找到一个命令,将图标(.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  )

相关内容