Làm cách nào để đặt hình ảnh đầu tiên của mỗi thư mục làm biểu tượng thư mục của nó?


19

Nếu có ảnh trong thư mục A, B, C ..... Z, làm cách nào để tôi tự động đặt ảnh đầu tiên trong mỗi thư mục này làm biểu tượng thư mục của nó? Có cách nào như kịch bản hay cái gì khác không?

Câu trả lời:


28

1. Tự động thay đổi biểu tượng thư mục thành hình ảnh tìm thấy đầu tiên bên trong

Kịch bản python bên dưới sẽ thay đổi biểu tượng của tất cả các thư mục bên trong một thư mục (đệ quy) thành tệp hình ảnh hợp lệ đầu tiên được tìm thấy bên trong thư mục.

Kịch bản

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

Tải xuống từ Pastebin

Cách sử dụng

  1. Sao chép tập lệnh vào một tập tin trống, lưu nó dưới dạng change_icon.py
  2. Trong phần đầu của tập lệnh, hãy chỉnh sửa, nếu bạn muốn, danh sách các tiện ích mở rộng sẽ được sử dụng làm hình ảnh biểu tượng hợp lệ.
  3. Chạy nó với thư mục được nhắm mục tiêu như là một đối số:

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

Đó là nó!

2. Cao cấp hơn

... là làm cho nó trở thành một tùy chọn nhấp chuột phải trong nautilus:

nhập mô tả hình ảnh ở đây

Kịch bản hơi khác một chút rồ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"]
# ---

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

Tải xuống từ Pastebin

Để sử dụng

  1. Tạo, nếu nó chưa tồn tại, thư mục

    ~/.local/share/nautilus/scripts
  2. Sao chép tập lệnh vào một tệp trống, lưu nó ~/.local/share/nautilus/scriptsdưới dạng set_foldericons(không có phần mở rộng!) Và làm cho nó có thể thực thi được .

  3. Đăng xuất và trở lại, nó hoạt động.

Ghi chú

  • Điều này sẽ thay đổi biểu tượng của tất cả các thư mục bên trong thư mục nhấp chuột phải, không phải của chính thư mục đó.
  • os.path.realpath()được sử dụng, điều này cũng hoạt động nếu thư mục được nhắm mục tiêu là một liên kết.

CHỈNH SỬA

Hoàn tác (đặt lại) các biểu tượng tùy chỉnh trong thư mục theo cách đệ quy

Nếu, vì một số lý do, bạn muốn đặt lại các biểu tượng trong thư mục thành (các) biểu tượng mặc định của chúng, hãy sử dụng tập lệnh bên dưới. Đơn giản:

  • sao chép nó vào một tập tin trống, lưu nó dưới dạng reset_icons.py
  • chạy nó bằng lệnh:

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

Kịch bản

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

Tôi thấy rằng tôi phải nhập đường dẫn đầy đủ, chẳng hạn như "/ home / user / folderName"
JulianLai

Nếu họ thêm chức năng này vào Nautilus, nó sẽ là một trình quản lý tệp tốt hơn.
JulianLai


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
terdon

@JacobVlijm thay vì hình ảnh đầu tiên trong thư mục tôi có thể làm cho nó để chọn một tệp duy nhất, ví dụ như .folder.pngtrong mỗi thư mục. Điều này thực sự hữu ích cho các thư mục có nhiều hơn một hình ảnh. Tôi đã và đang sử dụng tập lệnh này và đó là một cải tiến mà tôi muốn thấy trong đó, hãy hỏi Ubuntu.com/questions/900785/ mẹo
Sumeet Deshmukh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.