2010-07-27 13 views
4

Parce que je sais qu'un simple appel API gère la définition des icônes de dossiers personnalisés dans Windows, j'ai cherché une méthode API pour définir des icônes de dossier personnalisé sous Linux. Mais en this thread, j'ai vu que ce n'est pas le cas. J'ai également appris que chaque environnement de bureau a sa propre façon de définir des icônes de dossiers personnalisés. La manière de KDE est clairement décrite ici.Comment programmer l'icône de dossier personnalisé dans GNOME?

Pour GNOME, j'ai cherché la même chose; mais aucun fichier n'est créé lors de la définition de l'icône du dossier dans le panneau des propriétés. Je pense qu'il devrait y avoir un fichier semblable à un registre quelque part dans la maison de l'utilisateur ou/etc.

Je serai heureux, si vous tuez ma douleur. Merci.

Répondre

5

J'ai finalement compris comment faire ça! Voici un script Python qui fonctionne dans l'environnement Gnome standard:

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

c'est excellent! Merci beaucoup! – STW