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

9

Je voudrais ajouter des emblèmes à un fichier dans Thunar en utilisant 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 ~/.cache/Thunar/metafile.tdbfichier qui n'existe pas sur mon système. Je pense que cette question et la réponse sont dépassées.

Remco Haszing
la source
Êtes-vous sûr qu'il n'existe pas? ~/.cacheest un fichier caché que vous connaissez ..
Seth
~/.cache/Thunar/n'existe même pas. Pas même après avoir ajouté un emblème à un fichier dans Thunar. J'ai installé Thunar version 1.6.3.
Remco Haszing

Réponses:

13

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, cependant vous ne pouvez pas les lire à partir des fichiers (elles sont stockées dans un certain format binaire je pense). Pour lire les métadonnées, vous utilisez la gvfs-infocommande comme ceci:

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

Qui imprimera les métadonnées de /some/location.

Si vous souhaitez modifier les métadonnées, vous pouvez utiliser la gvfs-set-attributecommande comme ceci:

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

/some/locationest l'emplacement du fichier / dossier dont vous souhaitez modifier les métadonnées, -t stringvindique à la commande d'attendre une entrée de chaîne, mdtypedéfinit le type de métadonnées que vous souhaitez modifier (par exemple emblems) et new valuedéfinit valuecomme métadonnées pour mdtype. Par exemple:

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

Donne Downloadsl' defaultemblème au dossier .

Définissez la valeur sur nonepour 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 plusieurs dossiers / fichiers à 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:

Seth
la source
@RemcoHaszing Veuillez vérifier ma réponse modifiée, j'ai fait une erreur et je l'ai maintenant corrigée.
Seth
Je voulais savoir, parce que je voulais écrire un script qui définit les emblèmes pour indiquer l'état de mes dossiers Dropbox. J'ai découvert que je devais redémarrer Thunar pour voir les nouveaux emblèmes ajoutés et lire ceci dans votre réponse mise à jour. Savez-vous si Thunar peut reprendre ces changements tout en exécutant d'une manière ou d'une autre?
Remco Haszing
@RemcoHaszing Non, ce n'est vraiment pas possible AFAIK. Thunar devrait continuellement sonder les changements et cela prendrait beaucoup de ressources. Je pourrais modifier le script pour fermer toutes les instances de Thunar en cours d'exécution et ouvrir une nouvelle instance dans vos dossiers Dropbox, en fonction de ce que vous essayez exactement de faire.
Seth
Très bon script et commande. Cela fonctionne parfaitement sur les fichiers et répertoires. Cependant, mon dossier Dropbox est sa propre partition / dev / sda2 mais il se monte sur ~ / Dropbox. J'ai essayé de définir l'emblème pour ~ / Dropbox mais cela n'a pas fonctionné. Des idées? Merci
jbrock
@jbrock Avez-vous redémarré le gestionnaire de fichiers? Les modifications ne prennent effet qu'au redémarrage. Si cela ne le résout pas, je crains de ne pas savoir. Vous pouvez essayer de poser une nouvelle question. Je serais ravi de vous aider, mais je manque actuellement de ressources pour tester ce problème spécifique. Désolé!
Seth