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?
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 .
#!/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))
])
change_icon.py
Führen Sie es mit dem Zielverzeichnis als Argument aus:
python3 /path/to/change_icon.py <targeted_directory>
Das ist es!
... soll es in Nautilus zu einer Rechtsklick-Option machen:
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))
])
Erstellen Sie das Verzeichnis, falls es noch nicht existiert
~/.local/share/nautilus/scripts
Kopieren Sie das Skript in eine leere Datei, speichern Sie es ~/.local/share/nautilus/scripts
unter set_foldericons
(keine Erweiterung!) Und machen Sie es ausführbar .
os.path.realpath()
verwendet wird, funktioniert dies auch, wenn der Zielordner ein Link ist.Wenn Sie aus irgendeinem Grund die Symbole in einem Ordner auf die Standardsymbole zurücksetzen möchten, verwenden Sie das folgende Skript. Einfach:
reset_icons.py
starte es mit dem Befehl:
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"
])
.folder.png
in 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/…