Tôi vẫn có thể "tao nhã một chút" nhưng dưới đây là các phiên bản chỉnh sửa của những cái được liên kết.
Sự khác biệt là gì?
Tôi đã thêm một danh sách được xác định trước vào phần đầu:
specs = ["folder.png", "cover.png", "monkey.png"]
và tôi đã thay thế:
try:
first = min(p for p in os.listdir(folder)
if p.split(".")[-1].lower() in ext)
except ValueError:
pass
bởi:
fls = os.listdir(folder)
try:
first = [p for p in fls if p in specs]
first = first[0] if first else min(
p for p in fls if p.split(".")[-1].lower() in ext
)
except ValueError:
pass
để trước tiên tập lệnh cố gắng tìm (tập tin) khớp trong danh sách specs
, (chỉ) nếu không có, nó sẽ nhảy vào tìm kiếm phần mở rộng phù hợp và thực hiện thủ thuật nếu tìm thấy hình ảnh phù hợp.
1. Phiên bản cơ bản
Được sử dụng với thư mục được nhắm mục tiêu làm đối số:
#!/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"]
# --- set the list of preferred filenames
# --- use quotes
specs = ["folder.png", "cover.png", "monkey.png"]
# ---
# retrieve the path of the targeted folder
dr = sys.argv[1]
for root, dirs, files in os.walk(dr):
for directory in dirs:
folder = os.path.join(root, directory)
try:
fls = os.listdir(folder)
first = [p for p in fls if p in specs]
first = first[0] if first else min(
p for p in fls if p.split(".")[-1].lower() in ext
)
except (ValueError, PermissionError):
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))
])
Cách sử dụng
- 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
- 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 phần mở rộng sẽ được sử dụng làm hình ảnh biểu tượng hợp lệ. Cũng thiết lập danh sách tên tập tin ưa thích.
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. Tùy chọn nhấp chuột phải được chỉnh sửa, được sử dụng làm tập lệnh nautilus (nhấp chuột phả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"]
# --- set the list of preferred filenames
# --- use quotes
specs = ["folder.png", "cover.png", "aap.png"]
# ---
def fix(path):
for c in [("%23", "#"), ("%5D", "]"), ("%5E", "^"),
("file://", ""), ("%20", " ")]:
path = path.replace(c[0], c[1])
return path
# retrieve the path of the targeted folder
current = fix(os.getenv("NAUTILUS_SCRIPT_CURRENT_URI"))
dr = os.path.realpath(current)
for root, dirs, files in os.walk(dr):
for directory in dirs:
folder = os.path.join(root, directory)
try:
fls = os.listdir(folder)
first = [p for p in fls if p in specs]
first = first[0] if first else min(
p for p in fls if p.split(".")[-1].lower() in ext
)
except (ValueError, PermissionError):
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))
])
Để sử dụng
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 .
- 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 phần mở rộng sẽ được sử dụng làm hình ảnh biểu tượng hợp lệ. Cũng thiết lập danh sách tên tập tin ưa thích.
- Đăng xuất và đăng nhập trở lại, và nó hoạt động.
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 tại đây