Hala "biraz şık" olabilir ama aşağıda bağlantılı olanların düzenlenmiş sürümleri.
Fark ne?
Baş bölümüne önceden tanımlanmış bir liste ekledim:
specs = ["folder.png", "cover.png", "monkey.png"]
ve ben değiştirdim:
try:
first = min(p for p in os.listdir(folder)
if p.split(".")[-1].lower() in ext)
except ValueError:
pass
tarafından:
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
betiğin önce listede (dosya) eşleşmelerini bulmaya çalışması specs, (yalnızca) yoksa, eşleşen uzantıyı aramaya atlar ve uygun bir görüntü bulursa hile yapar.
1. Temel sürüm
Hedeflenen dizinde bağımsız değişken olarak kullanılacak:
#!/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))
])
Nasıl kullanılır
- Komut dosyasını boş bir dosyaya kopyalayın,
change_icon.py
- Komut dosyasının başında, isterseniz, geçerli simge resimleri olarak kullanılacak uzantıların listesini düzenleyin. Ayrıca tercih edilen dosya adları listesini de ayarlayın.
Bağımsız değişken olarak hedeflenen dizinde çalıştırın:
python3 /path/to/change_icon.py <targeted_directory>
Bu kadar!
2. Nautilus (sağ tıklama) komut dosyası olarak kullanılacak düzenlenmiş sağ tıklama seçeneği
#!/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))
])
Kullanmak
Henüz yoksa dizini oluşturun
~/.local/share/nautilus/scripts
Komut dosyasını boş bir dosyaya kopyalayın, (uzantı yok!) ~/.local/share/nautilus/scriptsOlarak kaydedin set_foldericonsve yürütülebilir yapın .
- Komut dosyasının başında, isterseniz, geçerli simge resimleri olarak kullanılacak uzantıların listesini düzenleyin. Ayrıca tercih edilen dosya adları listesini de ayarlayın.
- Oturumu kapatıp tekrar açın, işe yarıyor.
Herhangi bir nedenle bir klasör içindeki simgeleri varsayılan simgelerine sıfırlamak istiyorsanız, komut dosyasını burada kullanın