Saya mungkin masih "sedikit elegan" tetapi di bawah ini adalah versi yang diedit dari yang tertaut.
Apa bedanya?
Saya menambahkan daftar yang sudah ditentukan ke bagian kepala:
specs = ["folder.png", "cover.png", "monkey.png"]
dan saya diganti:
try:
first = min(p for p in os.listdir(folder)
if p.split(".")[-1].lower() in ext)
except ValueError:
pass
oleh:
fls = os.listdir(folder)
try:
first = [p for p in fls if p in specs]
first = first[0] if first else min(
p for p in fls if p.split(".")[-1].lower() in ext
)
except ValueError:
pass
sehingga skrip pertama-tama mencoba menemukan (file) yang cocok dalam daftar specs
, (hanya) jika tidak ada, ia melompat ke mencari ekstensi yang cocok, dan melakukan trik jika menemukan gambar yang cocok.
1. Versi dasar
Untuk digunakan dengan direktori yang ditargetkan sebagai argumen:
#!/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"]
# --- set the list of preferred filenames
# --- use quotes
specs = ["folder.png", "cover.png", "monkey.png"]
# ---
# retrieve the path of the targeted folder
dr = sys.argv[1]
for root, dirs, files in os.walk(dr):
for directory in dirs:
folder = os.path.join(root, directory)
try:
fls = os.listdir(folder)
first = [p for p in fls if p in specs]
first = first[0] if first else min(
p for p in fls if p.split(".")[-1].lower() in ext
)
except (ValueError, PermissionError):
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))
])
Cara Penggunaan
- Salin skrip ke file kosong, simpan sebagai
change_icon.py
- Di bagian atas skrip, edit, jika Anda mau, daftar ekstensi yang akan digunakan sebagai gambar ikon yang valid. Juga atur daftar nama file yang disukai.
Jalankan dengan direktori yang ditargetkan sebagai argumen:
python3 /path/to/change_icon.py <targeted_directory>
Itu dia!
2. Opsi klik kanan yang diedit, untuk digunakan sebagai skrip nautilus (klik kanan)
#!/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"]
# --- set the list of preferred filenames
# --- use quotes
specs = ["folder.png", "cover.png", "aap.png"]
# ---
def fix(path):
for c in [("%23", "#"), ("%5D", "]"), ("%5E", "^"),
("file://", ""), ("%20", " ")]:
path = path.replace(c[0], c[1])
return path
# retrieve the path of the targeted folder
current = fix(os.getenv("NAUTILUS_SCRIPT_CURRENT_URI"))
dr = os.path.realpath(current)
for root, dirs, files in os.walk(dr):
for directory in dirs:
folder = os.path.join(root, directory)
try:
fls = os.listdir(folder)
first = [p for p in fls if p in specs]
first = first[0] if first else min(
p for p in fls if p.split(".")[-1].lower() in ext
)
except (ValueError, PermissionError):
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))
])
Menggunakan
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 .
- Di bagian atas skrip, edit, jika Anda mau, daftar ekstensi yang akan digunakan sebagai gambar ikon yang valid. Juga atur daftar nama file yang disukai.
- Logout dan kembali, dan berfungsi.
Jika, karena alasan tertentu Anda ingin mengatur ulang ikon di dalam folder ke ikon default, gunakan skrip di sini