Câu trả lời:
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.
#!/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))
])
change_icon.py
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ó!
... là làm cho nó trở thành một tùy chọn nhấp chuột phải trong nautilus:
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ạo, nếu nó chưa tồn tại, thư mục
~/.local/share/nautilus/scripts
Sao chép tập lệnh vào một tệp trống, lưu nó ~/.local/share/nautilus/scripts
dưới dạng set_foldericons
(không có phần mở rộng!) Và làm cho nó có thể thực thi đượ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.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:
reset_icons.py
chạy nó bằng lệnh:
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"
])
.folder.png
trong 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