web-dev-qa-db-fra.com

Comment définir des emblèmes à Thunar sans l'interface graphique?

J'aimerais ajouter des emblèmes à un fichier dans Thunar à l'aide d'un script, mais je ne trouve aucune documentation à ce sujet.

Est-il possible de faire cela? Et si oui, comment?

La même question a été posée ici , mais ils mentionnent un fichier ~/.cache/Thunar/metafile.tdb qui n'existe pas sur mon système. Je pense que cette question et la réponse sont obsolètes.

9
Remco Haszing

Thunar, depuis la version 1.6, a commencé à utiliser le démon gvfs-metadata pour stocker les métadonnées. Les métadonnées sont stockées dans ~/.local/share/gvfs-metadata, mais vous ne pouvez pas les lire à partir des fichiers (c'est stocké dans un format binaire je pense). Pour lire les métadonnées, utilisez la commande gvfs-info comme ceci:

gvfs-info -a metadata:: /some/location  

Ce qui imprimera les métadonnées de /some/location.

Si vous voulez changer les métadonnées, vous pouvez utiliser la commande gvfs-set-attribute comme ceci:

gvfs-set-attribute /some/location -t stringv metadata::mdtype value  

/some/location est l'emplacement du fichier/dossier dont vous souhaitez modifier les métadonnées, -t stringv indique à la commande d'attendre l'entrée de chaîne, mdtype définit le type de métadonnées que vous souhaitez modifier (par exemple, emblems) et new value définit value comme métadonnées pour mdtype. Par exemple:

gvfs-set-attribute Downloads -t stringv metadata::emblems emblem-default  

Donne l'emblème Downloads au dossier default.

Définissez la valeur sur none pour supprimer les emblèmes. Vous devrez redémarrer le gestionnaire de fichiers pour voir les modifications.


J'ai écrit un petit script qui vous permet de changer l'emblème de plus d'un dossier/fichier à la fois:

run() {    
cd # make sure we're in the home directory
echo 'What emblem do you want to apply?'
read emblem

if ! [ -z $emblem ]; then
    for i in $@
    do
        echo 'Changing stuff...'
        $(gvfs-set-attribute $i -t stringv metadata::emblems $emblem)
    done
    echo 'Done!'
else
    echo 'Emblem must be specified! Exiting...'
    exit  
fi
}

init() {

if [[ -z $@  ]]; then
    echo "No arguments provided"
else   
    run $@
fi
}

init $@  

Sources:

13
Seth