Bagaimana cara mengatur gambar pertama dari setiap folder sebagai ikon foldernya?

19

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?

JulianLai
sumber

Jawaban:

28

1. Secara otomatis mengubah ikon folder menjadi gambar pertama yang ditemukan di dalam

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.

Naskah

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

Unduh dari Pastebin

Cara Penggunaan

  1. Salin skrip ke file kosong, simpan sebagai change_icon.py
  2. Di bagian atas skrip, edit, jika Anda mau, daftar ekstensi yang akan digunakan sebagai gambar ikon yang valid.
  3. Jalankan dengan direktori yang ditargetkan sebagai argumen:

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

Itu dia!

2. Lebih maju

... adalah menjadikannya pilihan klik kanan di nautilus:

masukkan deskripsi gambar di sini

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))
                  ])

Unduh dari Pastebin

Menggunakan

  1. Buat, jika belum ada, direktori

    ~/.local/share/nautilus/scripts
  2. Salin skrip ke file kosong, simpan ~/.local/share/nautilus/scriptssebagai set_foldericons(tidak ada ekstensi!), Dan membuatnya dapat dieksekusi .

  3. Logout dan kembali, berfungsi.

Catatan

  • Ini akan mengubah ikon semua folder di dalam folder yang diklik kanan, bukan dari folder itu sendiri.
  • Karena os.path.realpath()digunakan, ini juga berfungsi jika folder yang ditargetkan adalah tautan.

EDIT

Undo (reset) ikon kustom di dalam direktori secara rekursif

Jika, karena alasan tertentu Anda ingin mengatur ulang ikon di dalam folder ke ikon default, gunakan skrip di bawah ini. Secara sederhana:

  • salin ke file kosong, simpan sebagai reset_icons.py
  • jalankan dengan perintah:

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

Naskah

#!/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"
            ])
Yakub Vlijm
sumber
Saya menemukan bahwa saya harus memasukkan path lengkap, seperti "/ home / user / folderName"
JulianLai
Jika mereka menambahkan fungsi ini ke Nautilus, itu akan menjadi manajer file yang lebih baik.
JulianLai
Mari kita lanjutkan diskusi ini dalam obrolan .
Jacob Vlijm
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
terdon
@JacobVlijm bukan gambar pertama di folder yang dapat saya buat untuk memilih file yang unik, misalnya .folder.pngdi 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/…
Sumeet Deshmukh