วิธีการตั้งค่าภาพแรกของทุก ๆ โฟลเดอร์เป็นไอคอนของโฟลเดอร์


19

หากมีรูปภาพในโฟลเดอร์ A, B, C ..... Z ฉันจะตั้งค่ารูปภาพแรกในแต่ละโฟลเดอร์เหล่านี้โดยอัตโนมัติเป็นไอคอนโฟลเดอร์ได้อย่างไร มีวิธีเหมือนสคริปต์หรืออย่างอื่นหรือไม่?

คำตอบ:


28

1. เปลี่ยนไอคอนโฟลเดอร์โดยอัตโนมัติเป็นภาพแรกที่พบภายใน

สคริปต์ไพ ธ อนด้านล่างจะเปลี่ยนไอคอนของโฟลเดอร์ทั้งหมดภายในไดเรกทอรี (เรียกซ้ำ) เป็นไฟล์รูปภาพที่ถูกต้องที่พบครั้งแรกภายในโฟลเดอร์

บท

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

วิธีใช้

  1. คัดลอกสคริปต์ลงในไฟล์ว่างแล้วบันทึกเป็น change_icon.py
  2. ในส่วนหัวของสคริปต์ให้แก้ไขหากคุณต้องการรายการส่วนขยายที่จะใช้เป็นรูปภาพไอคอนที่ถูกต้อง
  3. เรียกใช้ด้วยไดเรกทอรีเป้าหมายเป็นอาร์กิวเมนต์:

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

แค่นั้นแหละ!

2. ขั้นสูงเพิ่มเติม

... คือการทำให้เป็นตัวเลือกคลิกขวาใน nautilus:

ป้อนคำอธิบายรูปภาพที่นี่

สคริปต์แตกต่างกันเล็กน้อยแล้ว:

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

ใช้

  1. สร้างถ้ามันยังไม่มีไดเรกทอรี

    ~/.local/share/nautilus/scripts
  2. คัดลอกสคริปต์ลงในไฟล์ว่างเปล่าบันทึก~/.local/share/nautilus/scriptsเป็นset_foldericons(ไม่มีส่วนขยาย!) และทำให้สามารถเรียกใช้งานได้

  3. ออกจากระบบและกลับมาใช้งานได้

หมายเหตุ

  • การดำเนินการนี้จะเปลี่ยนไอคอนของโฟลเดอร์ทั้งหมดภายในโฟลเดอร์ที่คลิกขวาไม่ใช่ของโฟลเดอร์
  • เนื่องจากos.path.realpath()มีการใช้งานสิ่งนี้จะทำงานหากโฟลเดอร์เป้าหมายเป็นลิงก์

แก้ไข

เลิกทำ (รีเซ็ต) ไอคอนที่กำหนดเองภายในไดเรกทอรีซ้ำ

หากด้วยเหตุผลบางประการที่คุณต้องการรีเซ็ตไอคอนภายในโฟลเดอร์เป็นไอคอนเริ่มต้นให้ใช้สคริปต์ด้านล่าง เพียง:

  • คัดลอกลงในไฟล์เปล่าบันทึกเป็น reset_icons.py
  • เรียกใช้โดยคำสั่ง:

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

ฉันพบว่าฉันต้องป้อนเส้นทางแบบเต็มเช่น "/ home / user / folderName"
JulianLai

หากพวกเขาเพิ่มฟังก์ชั่นนี้ลงใน Nautilus มันจะเป็นตัวจัดการไฟล์ที่ดีกว่า
JulianLai

ขอให้เรายังคงอภิปรายนี้ในการแชท
Jacob Vlijm

ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
terdon

@JacobVlijm แทนที่จะเป็นรูปแรกในโฟลเดอร์ฉันจะทำให้มันเลือกไฟล์ที่ไม่ซ้ำได้หรือไม่ตัวอย่างเช่น.folder.pngในทุก ๆ โฟลเดอร์ สิ่งนี้มีประโยชน์มากสำหรับไดเรกทอรีที่มีรูปภาพมากกว่าหนึ่งภาพ ฉันเคยใช้สคริปต์นี้และเป็นการปรับปรุงที่ฉันชอบที่จะเห็นในมัน Askubuntu.com/questions/900785/ …
Sumeet Deshmukh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.