web-dev-qa-db-fra.com

Changer l'icône de dossier de plusieurs dossiers, albums de musique

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.

3
Sundar Labhar

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.

Ce script a été écrit par Jacob Vlijm et a été posté à l'origine ici .

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))
                  ])
  • Lors de la sauvegarde, sélectionnez ce chemin pour sauvegarder ce fichier nouvellement créé, /home/sundar/.local/share/nautilus/scripts
  • Conservez le nom de fichier set_foldericon sans extension
  • Ouvrez maintenant votre application de fichiers (Nautilus) et allez à /home/sundar/.local/share/nautilus/scripts
  • Vous devriez voir un fichier nommé set_foldericon
  • Maintenant, faites un clic droit sur ce fichier, sélectionnez Propriétés , puis sélectionnez Autorisations et cliquez sur Autoriser l'exécution fichier en tant que programme
  • Maintenant déconnectez-vous et reconnectez-vous
  • Maintenant, allez dans le dossier où sont stockés vos albums de musique
  • Faites un clic droit sur un dossier, vous devriez voir la deuxième option en tant que Scripts sélectionnez l'option nommée Set foldericon
  • Recharger en appuyant sur F5
  • Vos albums devraient avoir une couverture maintenant

Screenshot of albums with cover pics

3
Sumeet Deshmukh

Pour un seul répertoire

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>

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

Pour plusieurs répertoires avec l'icône identique

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

Pour plusieurs répertoires avec différentes icônes automatiquement sélectionnées

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.

Pour plusieurs répertoires avec différentes icônes manuellement sélectionnées

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)

3
David Foerster

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
1
mightyjazzman