나는 여전히 "조금 우아하다"고 할 수 있지만 아래는 링크 된 버전의 편집 된 버전입니다.
차이점은 무엇입니까?
헤드 섹션에 사전 정의 된 목록을 추가했습니다.
specs = ["folder.png", "cover.png", "monkey.png"]
그리고 나는 교체했다 :
try:
first = min(p for p in os.listdir(folder)
if p.split(".")[-1].lower() in ext)
except ValueError:
pass
으로:
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
따라서 스크립트는 먼저 list에서 (file) 일치 항목을 찾으려고 시도합니다 ( specs
없는 경우) 일치하는 확장명 검색으로 이동하고 적합한 이미지를 찾으면 트릭을 수행합니다.
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"]
# --- 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))
])
사용하는 방법
- 스크립트를 빈 파일로 복사하여 다른 이름으로 저장하십시오.
change_icon.py
- 스크립트 헤드에서 원하는 경우 유효한 아이콘 이미지로 사용할 확장자 목록을 편집하십시오. 또한 선호하는 파일 이름 목록을 설정하십시오.
대상 디렉토리를 인수로 사용하여 실행하십시오.
python3 /path/to/change_icon.py <targeted_directory>
그게 다야!
2. 편집 된 오른쪽 클릭 옵션으로 노틸러스 (오른쪽 클릭) 스크립트로 사용됩니다.
#!/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))
])
쓰다
존재하지 않는 경우 디렉토리를 만듭니다.
~/.local/share/nautilus/scripts
스크립트를 빈 파일로 복사하고 (확장자 없음!) ~/.local/share/nautilus/scripts
으로 저장 한 다음 실행 가능하게 만드십시오 .set_foldericons
- 스크립트 헤드에서 원하는 경우 유효한 아이콘 이미지로 사용할 확장자 목록을 편집하십시오. 또한 선호하는 파일 이름 목록을 설정하십시오.
- 로그 아웃했다가 다시 로그인하면 작동합니다.
어떤 이유로 폴더 안의 아이콘을 기본 아이콘으로 재설정하려면 여기에 있는 스크립트를 사용 하십시오