Wie wird das erste Bild jedes Ordners als Ordnersymbol festgelegt?

19

Wenn sich Bilder in Ordner A, B, C ... Z befinden, wie lege ich automatisch das erste Bild in jedem dieser Ordner als Ordnersymbol fest? Gibt es einen Weg wie ein Skript oder etwas anderes?

JulianLai
quelle

Antworten:

28

1. Ändern Sie das Ordnersymbol automatisch in das erste gefundene Bild

Mit dem folgenden Python-Skript wird das Symbol aller Ordner in einem Verzeichnis (rekursiv) in die erste gültige Bilddatei innerhalb des Ordners geändert .

Das Drehbuch

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

Herunterladen von Pastebin

Wie benutzt man

  1. Kopieren Sie das Skript in eine leere Datei und speichern Sie es unter change_icon.py
  2. Bearbeiten Sie, wenn Sie möchten, im Kopf des Skripts die Liste der Erweiterungen, die als gültige Symbolbilder verwendet werden sollen.
  3. Führen Sie es mit dem Zielverzeichnis als Argument aus:

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

Das ist es!

2. Fortgeschrittener

... soll es in Nautilus zu einer Rechtsklick-Option machen:

Bildbeschreibung hier eingeben

Das Skript ist dann etwas anders:

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

Herunterladen von Pastebin

Benutzen

  1. Erstellen Sie das Verzeichnis, falls es noch nicht existiert

    ~/.local/share/nautilus/scripts
  2. Kopieren Sie das Skript in eine leere Datei, speichern Sie es ~/.local/share/nautilus/scriptsunter set_foldericons(keine Erweiterung!) Und machen Sie es ausführbar .

  3. Melden Sie sich ab und wieder an, es funktioniert.

Anmerkungen

  • Dadurch wird das Symbol aller Ordner innerhalb des Ordners, auf den mit der rechten Maustaste geklickt wird, und nicht des Ordners selbst geändert .
  • Da os.path.realpath()verwendet wird, funktioniert dies auch, wenn der Zielordner ein Link ist.

BEARBEITEN

Rückgängigmachen (Zurücksetzen) der benutzerdefinierten Symbole in einem Verzeichnis nacheinander

Wenn Sie aus irgendeinem Grund die Symbole in einem Ordner auf die Standardsymbole zurücksetzen möchten, verwenden Sie das folgende Skript. Einfach:

  • Kopieren Sie es in eine leere Datei, speichern Sie es als reset_icons.py
  • starte es mit dem Befehl:

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

Das Drehbuch

#!/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"
            ])
Jacob Vlijm
quelle
Ich stellte fest, dass ich den vollständigen Pfad eingeben musste, z. B. "/ home / user / folderName"
JulianLai
Wenn sie diese Funktion zu Nautilus hinzufügen, ist dies ein besserer Dateimanager.
JulianLai
Lassen Sie uns diese Diskussion im Chat fortsetzen .
Jacob Vlijm
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Terdon
@JacobVlijm anstelle des ersten Bildes im Ordner kann ich es machen, eine eindeutige Datei auszuwählen, zum Beispiel .folder.pngin jedem Ordner. Dies ist sehr hilfreich für Verzeichnisse mit mehr als einem Bild. Ich habe dieses Skript verwendet und das ist eine Verbesserung, die ich gerne darin sehen würde askubuntu.com/questions/900785/…
Sumeet Deshmukh