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.
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 $@