Как программно установить пользовательский значок папки в GNOME? - PullRequest
5 голосов
/ 27 июля 2010

Поскольку я знаю, что простой вызов API обрабатывает установку пользовательских значков папок в Windows, я искал метод API для установки пользовательских значков папок в Linux.

Но в этой теме я увидел, что такого пути нет.Также я узнал, что в каждой среде рабочего стола есть свой способ установки пользовательских значков папок.Там четко описан путь KDE.

Для GNOME я искал аналогичный путь;но файл не создается при установке значка папки на панели свойств.Я думаю, что где-то в доме пользователя должен быть файл, похожий на реестр, или /etc.

Я буду рад, если вы убьете мою боль.Спасибо.

1 Ответ

6 голосов
/ 04 мая 2012

Я наконец понял, как это сделать!Вот скрипт Python, который работает в стандартной среде Gnome:

#!/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)
...