Jika ada gambar di folder A, B, C ..... Z, bagaimana cara saya secara otomatis mengatur gambar pertama di masing-masing folder ini sebagai ikon foldernya? Apakah ada cara seperti naskah atau sesuatu yang lain?
19
Skrip python di bawah ini akan mengubah ikon semua folder di dalam direktori (secara rekursif) menjadi file gambar valid pertama yang ditemukan di dalam folder.
#!/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
Jalankan dengan direktori yang ditargetkan sebagai argumen:
python3 /path/to/change_icon.py <targeted_directory>
Itu dia!
... adalah menjadikannya pilihan klik kanan di nautilus:
Skripnya sedikit berbeda:
#!/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))
])
Buat, jika belum ada, direktori
~/.local/share/nautilus/scripts
Salin skrip ke file kosong, simpan ~/.local/share/nautilus/scripts
sebagai set_foldericons
(tidak ada ekstensi!), Dan membuatnya dapat dieksekusi .
os.path.realpath()
digunakan, ini juga berfungsi jika folder yang ditargetkan adalah tautan.Jika, karena alasan tertentu Anda ingin mengatur ulang ikon di dalam folder ke ikon default, gunakan skrip di bawah ini. Secara sederhana:
reset_icons.py
jalankan dengan perintah:
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
di setiap folder. ini sangat membantu untuk direktori dengan lebih dari satu gambar. Saya telah menggunakan skrip ini dan itulah satu peningkatan yang ingin saya lihat di dalamnya askubuntu.com/questions/900785/…