Her klasörün ilk resmi klasör simgesi olarak nasıl ayarlanır?


19

A, B, C ..... klasöründe resimler varsa, bu klasörlerin her birindeki ilk resmi otomatik olarak klasör simgesi olarak nasıl ayarlayabilirim? Senaryo veya başka bir şey var mı?

Yanıtlar:


28

1. Klasör simgesini otomatik olarak içindeki ilk resme dönüştür

Aşağıdaki python betiği, bir dizindeki tüm klasörlerin simgesini (özyineli olarak) klasörün içindeki ilk bulunan geçerli görüntü dosyasına dönüştürecektir .

Senaryo

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

Pastebin'den indir

Nasıl kullanılır

  1. Komut dosyasını boş bir dosyaya kopyalayın, change_icon.py
  2. Komut dosyasının başında, isterseniz, geçerli simge resimleri olarak kullanılacak uzantıların listesini düzenleyin.
  3. Bağımsız değişken olarak hedeflenen dizinde çalıştırın:

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

Bu kadar!

2. Daha gelişmiş

... nautilus'ta sağ tıklama seçeneği yapmaktır:

resim açıklamasını buraya girin

Komut dosyası biraz farklı:

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

Pastebin'den indir

Kullanmak

  1. Henüz yoksa dizini oluşturun

    ~/.local/share/nautilus/scripts
  2. Komut dosyasını boş bir dosyaya kopyalayın, (uzantı yok!) ~/.local/share/nautilus/scriptsOlarak kaydedin set_foldericonsve yürütülebilir yapın .

  3. Oturumu kapatıp tekrar açın, işe yarıyor.

notlar

  • Bu , sağ tıklatılan klasör içindeki tüm klasörlerin simgesini değiştirir , klasörün kendisini değiştirmez.
  • os.path.realpath()Kullanıldığından beri , hedeflenen klasör bir bağlantıysa bu da çalışır.

DÜZENLE

Bir dizindeki özel simgeleri özyinelemeli olarak geri alma (sıfırlama)

Herhangi bir nedenle bir klasör içindeki simgeleri varsayılan simgelerine sıfırlamak isterseniz, aşağıdaki komut dosyasını kullanın. basitçe:

  • boş bir dosyaya kopyalayın, kaydedin reset_icons.py
  • komut ile çalıştırın:

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

Senaryo

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

Ben "/ home / user / folderName" gibi tam yolu girmek zorunda olduğunu buldum
JulianLai

Bu işlevi Nautilus'a eklerse, daha iyi bir dosya yöneticisi olacaktır.
JulianLai


Yorumlar uzun tartışmalar için değildir; bu sohbet sohbete taşındı .
terdon

@JacobVlijm klasördeki ilk görüntü yerine benzersiz bir dosya seçebilirim, örneğin .folder.pngher klasörde. bu, birden fazla resme sahip dizinler için gerçekten yararlıdır. Bu senaryoyu kullanıyorum ve içinde görmek istediğim bir gelişme bu askubuntu.com/questions/900785/…
Sumeet Deshmukh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.