На этот вопрос уже есть ответ здесь:
Чтобы изменить значок папки, все, что вам нужно сделать, это щелкнуть правой кнопкой мыши на папку, выберите Свойства , щелкните значок папки, перейдите к выберите значок папки , выберите его и готово!
Но если вам придется делать это на сотнях папок, это будет проблемой. Мне нужен более короткий способ сделать то же самое. Как ярлык, который автоматически выбирает экран изображения или что-то еще, чтобы упростить его.
В каждой папке есть изображение с именем «album art.jpeg» или «cover art.jpg» или что-то в этом роде.
Существует два способа достигнуть того, что Вы хотите. Сначала каждый - просто ярлык
все, что необходимо сделать, нажимают на папку и нажимают Ctrl + я, который взял бы Вас на экран свойств. пропуск 2 шагов в Вашей описанной операции. это логично для некоторых папок, но если бы Вы говорите о 100's папок затем, я предложил бы, чтобы Вы пошли со вторым подходом
Второй путь является немного сложным. это добавляет опцию щелчка правой кнопкой в наутилусе (Ваше приложение файлов) для установки значка папки на все текущие каталоги в одиночном нажатии. Это выберет первое изображение, найденное в папке как значок папки.
Откройте gedit текстовый редактор и вставьте сценарий в пробеле gedit страница.
#!/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)) ])
/home/sundar/.local/share/nautilus/scripts
set_foldericon
без расширения/home/sundar/.local/share/nautilus/scripts
set_foldericon
Чтобы установить значок для одного файла или каталога , используйте следующую команду
gvfs-set-attribute -t string <PATH> metadata::custom-icon <IMAGE-URL>
, где <PATH>
- путь к файл или каталог, а <IMAGE-URI>
- это URI файла изображения, который используется в качестве значка. Чтобы использовать локальный файл изображения, используйте схему file:
, e. г. [+1110].
Теперь, чтобы применить это к нескольким файлам или каталогам, вы можете использовать команду цикла для многократного запуска вышеуказанной программы :
for p in <PATHS...>; do
gvfs-set-attribute -t string "$p" metadata::custom-icon <IMAGE-URL>
done
Поскольку вводить целую команду каждый раз, когда вы хотите назначить несколько значков, немного сложно, вы можете создать сценарий оболочки и сохранить его в файл, например. г. ~/.local/bin/set-custom-icon.sh
:
#!/bin/sh
set -eu
case "$1" in
*://*) icon="$1";;
/*) icon="file://$1";;
*) icon="file://$(readlink -e -- "$1")";;
esac
shift
for p; do
gvfs-set-attribute -t string "$p" metadata::custom-icon "$icon"
done
Установите разрешение на выполнение для файла
chmod +x ~/.local/bin/set-custom-icon.sh
Теперь вы можете использовать скрипт следующим образом:
~/.local/bin/set-custom-icon.sh <IMAGE> <PATHS...>
Мы можем расширить эту команду, чтобы выбрать разные файлы значков для каждого каталога, поскольку между ними существует простой шаблон.
for p in <PATHS...>; do
icon="$(find "$p" -mindepth 1 -maxdepth 1 \( -iname 'album*' -o -iname 'cover*' \) -a \( -iname '*.jp[eg]' -o -iname '*.jpeg' -o -iname '*.png' \) -type f -print -quit)"
[ -z "$icon" ] || gvfs-set-attribute -t string "$p" metadata::custom-icon "file://$(readlink -e -- "$icon")"
done
Для каждого пути $p
будет найден обычный файл непосредственно под $p
, имя которого начинается с album
или cover
и заканчивается .jpg
, .jpe
, .jpeg
или .png
(без учета регистра), если такой файл существует. Если существует несколько файлов, соответствующих этому шаблону, выбирается произвольный.
Если такой файл существует, он задается как значок для каталога $p
.
Мы можем сделать это с помощью скрипта, который открывает диалоговое окно файла, чтобы запрашивать местоположение значка повторно и без дальнейшего взаимодействия с пользователем: [ 1140]
for p in <PATHS...>; do
icon="$(zenity --file-selection --title="Select icon for $p" --file-filter='Supported images | *.jp[eg] *.jpeg *.png *.gif *.svg *.xpm' --file-filter='All files | *')" || break
gvfs-set-attribute -t string "$p" metadata::custom-icon "$icon"
done
(требуется пакет zenity
) sup>
Существует приложение под названием CoverThumbnailer, которое делает именно то, что хочет ОП. Любой JPG или PNG, называемый «обложка» или «папка» будет выбран в качестве эскиза изображения. Работает с любой папкой, а не только с музыкой
sudo add-apt-repository ppa:flozz/flozz
sudo apt-get update
sudo apt-get install cover-thumbnailer