S'il y a des images dans le dossier A, B, C ..... Z, comment définir automatiquement la première image de chacun de ces dossiers comme son icône de dossier? Y a-t-il un moyen comme un script ou autre chose?
Le script python ci-dessous modifie l'icône (de manière récursive) de tous les dossiers d'un répertoire en le premier fichier image trouvé valide du dossier.
#!/usr/bin/env python3
import subprocess
import os
import sys
# --- set the list of valid extensions below (lowercase)
# --- use quotes, *don't* include the dot!
ext = ["jpg", "jpeg", "png", "gif","icns", "ico"]
# ---
dr = sys.argv[1]
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))
])
Télécharger à partir de Pastebin
change_icon.py
Exécutez-le avec le répertoire ciblé comme argument:
python3 /path/to/change_icon.py <targeted_directory>
C'est tout!
... consiste à en faire un clic droit dans Nautilus:
Le script est légèrement différent alors:
#!/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))
])
Télécharger à partir de Pastebin
Créer, s'il n'existe pas encore, le répertoire
~/.local/share/nautilus/scripts
Copiez le script dans un fichier vide, enregistrez-le dans ~/.local/share/nautilus/scripts
sous le nom set_foldericons
(sans extension!) Et pour le rendre exécutable .
os.path.realpath()
est utilisé, cela fonctionne également si le dossier ciblé est un lien.Si, pour une raison quelconque, vous souhaitez rétablir les icônes par défaut des icônes d’un dossier, utilisez le script ci-dessous. Simplement:
reset_icons.py
lancez le par la commande:
python3 /path/to/reset_icons.py <target_directory>
#!/usr/bin/env python3
import subprocess
import os
import sys
dr = sys.argv[1]
for root, dirs, files in os.walk(dr):
for directory in dirs:
folder = os.path.join(root, directory)
subprocess.Popen([
"gvfs-set-attribute", os.path.abspath(folder),
"-t", "unset", "metadata::custom-icon"
])