Come impostare la prima immagine di ogni cartella come icona della cartella?


19

Se nella cartella A, B, C ..... Z sono presenti immagini, come posso impostare automaticamente la prima immagine in ciascuna di queste cartelle come icona della cartella? C'è un modo come una sceneggiatura o qualcos'altro?

Risposte:


28

1. Cambia automaticamente l'icona della cartella nella prima immagine trovata all'interno

Lo script python seguente cambierà l'icona di tutte le cartelle all'interno di una directory (ricorsivamente) nel primo file di immagine valido trovato all'interno della cartella.

Il copione

#!/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))
                  ])

Scarica da Pastebin

Come usare

  1. Copia lo script in un file vuoto, salvalo come change_icon.py
  2. Nell'intestazione dello script, modifica, se lo desideri, l'elenco delle estensioni da utilizzare come immagini icona valide.
  3. Eseguilo con la directory di destinazione come argomento:

    python3 /path/to/change_icon.py <targeted_directory>

Questo è tutto!

2. Più avanzato

... è renderlo un'opzione del tasto destro in nautilus:

inserisci qui la descrizione dell'immagine

Lo script è leggermente diverso quindi:

#!/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))
                  ])

Scarica da Pastebin

Usare

  1. Crea, se non esiste ancora, la directory

    ~/.local/share/nautilus/scripts
  2. Copia lo script in un file vuoto, salvalo ~/.local/share/nautilus/scriptscome set_foldericons(nessuna estensione!) E rendilo eseguibile .

  3. Esci e rientra, funziona.

Appunti

  • Questo cambierà l'icona di tutte le cartelle all'interno della cartella del tasto destro, non della cartella stessa.
  • Poiché os.path.realpath()viene utilizzato, funziona anche se la cartella di destinazione è un collegamento.

MODIFICARE

Annulla (ripristina) le icone personalizzate all'interno di una directory in modo ricorsivo

Se, per qualche motivo, desideri reimpostare le icone all'interno di una cartella sulle loro icone predefinite, usa lo script seguente. Semplicemente:

  • copiarlo in un file vuoto, salvarlo come reset_icons.py
  • eseguirlo dal comando:

    python3 /path/to/reset_icons.py <target_directory>

Il copione

#!/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"
            ])

Ho scoperto che dovevo inserire il percorso completo, ad esempio "/ home / user / nomeCartella"
JulianLai

Se aggiungono questa funzione a Nautilus, sarà un file manager migliore.
JulianLai,


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Terdon,

@JacobVlijm invece della prima immagine nella cartella posso farlo scegliere un file univoco, ad esempio .folder.pngin ogni cartella. questo è davvero utile per le directory con più di un'immagine. Ho usato questo script e questo è un miglioramento che mi piacerebbe vedere in esso askubuntu.com/questions/900785/…
Sumeet Deshmukh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.