Linux 如何在GNOME中以编程方式设置自定义文件夹图标?

Linux 如何在GNOME中以编程方式设置自定义文件夹图标?,linux,desktop,gnome,Linux,Desktop,Gnome,因为我知道一个简单的API调用可以处理Windows中自定义文件夹图标的设置,所以我寻找了一个API方法来设置Linux中的自定义文件夹图标 但在我看来,没有这样的办法。我还了解到,每个桌面环境都有自己的方式来设置自定义文件夹图标。这里清楚地描述了KDE的方式 对于侏儒,我寻找了类似的方法;但从“属性”面板设置文件夹图标时,不会创建任何文件。我认为应该在用户主页或/等的某个地方有一个类似注册表的文件 如果你能消除我的痛苦,我会很高兴的。 谢谢。我终于知道怎么做了!下面是一个在标准Gnome环境中

因为我知道一个简单的API调用可以处理Windows中自定义文件夹图标的设置,所以我寻找了一个API方法来设置Linux中的自定义文件夹图标

但在我看来,没有这样的办法。我还了解到,每个桌面环境都有自己的方式来设置自定义文件夹图标。这里清楚地描述了KDE的方式

对于侏儒,我寻找了类似的方法;但从“属性”面板设置文件夹图标时,不会创建任何文件。我认为应该在用户主页或/等的某个地方有一个类似注册表的文件

如果你能消除我的痛苦,我会很高兴的。
谢谢。

我终于知道怎么做了!下面是一个在标准Gnome环境中工作的Python脚本:

#!/usr/bin/env python

import sys
from gi.repository import Gio

if len(sys.argv) not in (2, 3):
    print 'Usage: {} FOLDER [ICON]'.format(sys.argv[0])
    print 'Leave out ICON to unset'
    sys.exit(0)

folder = Gio.File.new_for_path(sys.argv[1])
icon_file = Gio.File.new_for_path(sys.argv[2]) if len(sys.argv) == 3 else None

# Get a file info object 
info = folder.query_info('metadata::custom-icon', 0, None)

if icon_file is not None:
    icon_uri = icon_file.get_uri()
    info.set_attribute_string('metadata::custom-icon', icon_uri)
else:
    # Change the attribute type to INVALID to unset it
    info.set_attribute('metadata::custom-icon',
        Gio.FileAttributeType.INVALID, '')

# Write the changes back to the file
folder.set_attributes_from_info(info, 0, None)