Pour changer l’icône du dossier, il suffit de cliquer avec le bouton droit de la souris sur un dossier, de sélectionner Propriétés, de cliquer sur l’icône du dossier, d’accéder à choisir l’icône de dossier, de le sélectionner et de terminer. !
Mais si vous deviez le faire sur des centaines de dossiers, ce serait pénible. Ce que je veux, c'est un moyen plus court de faire la même chose. Comme un raccourci qui permettrait de choisir automatiquement l’écran d’image ou quoi que ce soit pour le rendre plus facile.
Chaque dossier contient une image nommée "album art.jpeg" ou "cover art.jpg" ou quelque chose du genre.
Il y a deux façons de réaliser ce que vous voulez. Le premier est simplement un raccourci
tout ce que vous avez à faire est de cliquer sur le dossier, puis sur Ctrl + I qui vous mènerait à l'écran des propriétés. sauter 2 étapes dans votre opération décrite. c'est logique pour certains dossiers, mais si vous parlez de centaines de dossiers, je vous conseillerais de choisir une deuxième approche.
La deuxième façon est un peu compliquée. il ajoute une option de clic droit dans Nautilus (votre application de fichiers) pour définir l'icône de dossier sur tous les répertoires actuels en un seul clic. Il choisira la première image trouvée dans le dossier en tant qu’icône de dossier.
Ouvrez l'éditeur de texte gedit et collez le script dans la page vierge de gedit.
#!/usr/bin/env python3 import subprocess import os # --- set the list of valid extensions below (lowercase) # --- use quotes, *don't* include the dot! ext = ["jpg", "jpeg", "png", "gif", "icns", "ico"] # --- # retrieve the path of the targeted folder current = os.getenv("NAUTILUS_SCRIPT_CURRENT_URI").replace("file://", "").replace("%20", " ") dr = os.path.realpath(current) for root, dirs, files in os.walk(dr): for directory in dirs: folder = os.path.join(root, directory) try: first = min(p for p in os.listdir(folder) if p.split(".")[-1].lower() in ext) except ValueError: pass else: subprocess.Popen([ "gvfs-set-attribute", "-t", "string", os.path.abspath(folder), "metadata::custom-icon", "file://"+os.path.abspath(os.path.join(folder, first)) ])
/home/sundar/.local/share/nautilus/scripts
set_foldericon
sans extension/home/sundar/.local/share/nautilus/scripts
set_foldericon
Pour définir l’icône du fichier ou du répertoire n, utilisez la commande suivante
gvfs-set-attribute -t string <PATH> metadata::custom-icon <IMAGE-URL>
où <PATH>
est le chemin du fichier ou du répertoire et <IMAGE-URI>
est un URI vers un fichier image à utiliser comme icône. Pour utiliser un fichier image local, utilisez le schéma file:
, e. g. file:///home/sundar/my-icon.png
.
Maintenant, pour appliquer ceci à plusieurs fichiers ou répertoires, vous pouvez utiliser une commande de boucle pour exécuter le programme ci-dessus plusieurs fois:
for p in <PATHS...>; do
gvfs-set-attribute -t string "$p" metadata::custom-icon <IMAGE-URL>
done
Parce que c’est un peu fastidieux de taper toute la commande chaque fois que vous voulez attribuer des icônes, vous pouvez créer un script Shell et l’enregistrer dans un fichier, e. g. ~/.local/bin/set-custom-icon.sh
:
#!/bin/sh
set -eu
case "$1" in
*://*) icon="$1";;
/*) icon="file://$1";;
*) icon="file://$(readlink -e -- "$1")";;
esac
shift
for p; do
gvfs-set-attribute -t string "$p" metadata::custom-icon "$icon"
done
Définir l'autorisation d'exécution sur le fichier
chmod +x ~/.local/bin/set-custom-icon.sh
Maintenant, vous pouvez utiliser le script comme ceci:
~/.local/bin/set-custom-icon.sh <IMAGE> <PATHS...>
Nous pouvons étendre cette commande pour sélectionner un fichier d’icône différent pour chaque répertoire car il existe un motif simple entre les deux.
for p in <PATHS...>; do
icon="$(find "$p" -mindepth 1 -maxdepth 1 \( -iname 'album*' -o -iname 'cover*' \) -a \( -iname '*.jp[eg]' -o -iname '*.jpeg' -o -iname '*.png' \) -type f -print -quit)"
[ -z "$icon" ] || gvfs-set-attribute -t string "$p" metadata::custom-icon "file://$(readlink -e -- "$icon")"
done
Pour chaque chemin $p
, vous trouverez un fichier normal directement sous $p
dont le nom commence par album
ou cover
et se termine par .jpg
, .jpe
. , .jpeg
ou .png
(insensible à la casse) si un tel fichier existe. Si plusieurs fichiers correspondant à ce modèle existent, un fichier arbitraire est choisi.
Si un tel fichier existe, il est défini comme l'icône du répertoire $p
.
Nous pouvons le faire avec un script qui ouvre une boîte de dialogue de fichier pour demander un emplacement d'icône à plusieurs reprises et sans autre interaction de l'utilisateur:
for p in <PATHS...>; do
icon="$(zenity --file-selection --title="Select icon for $p" --file-filter='Supported images | *.jp[eg] *.jpeg *.png *.gif *.svg *.xpm' --file-filter='All files | *')" || break
gvfs-set-attribute -t string "$p" metadata::custom-icon "$icon"
done
(nécessite le package zenity
)
Il existe une application appelée CoverThumbnailer qui fait exactement ce que le PO veut. Tout fichier jpg ou png appelé "couverture" ou "dossier" sera choisi comme image miniature. Fonctionne sur tous les dossiers, pas seulement la musique
Sudo add-apt-repository ppa:flozz/flozz
Sudo apt-get update
Sudo apt-get install cover-thumbnailer