Jak ustawić pierwsze zdjęcie każdego folderu jako ikonę folderu?
Powyższe pytanie zawiera odpowiedź składającą się ze skryptu, który dla mnie działa. Potrzebuje tylko niewielkiej poprawy.
Co to robi?
Znajduje pliki z rozszerzeniami .jpg, .jpeg, .png, .gif, .icns, .ico i ustawia je jako ikonę folderu folderu, w którym plik został znaleziony. Rekurencyjnie działa na wielu folderach. Zasadniczo próbuje znaleźć plik obrazu w folderze, a pierwszy znaleziony obraz jest ustawiany jako ikona folderu. Działa świetnie w wielu scenariuszach, a konfiguracja tego skryptu jest zwykle pierwszą rzeczą, którą robię po świeżej instalacji (ponieważ jest niesamowita).
Jaki jest problem?
Może istnieć kilka katalogów, które zawierają dużo plików graficznych, a pierwszy plik obrazu w tym katalogu może nie nadawać się do bycia ikoną folderu.
Co powinien zrobić
Zamiast rozszerzenie oparte jeśli stało się nazwa pliku i ukierunkowane na podstawie jednego (na przykład folder.png
) lub wielokrotne (np albumart.png
cover.png
) nazwy plików to ten problem może zostać rozwiązany.
lub jeszcze lepiej, aby oba podejścia działały w jednym skrypcie
- Znajdź predefiniowane
filenames
- Jeśli znaleziono, ustaw go jako ikonę folderu i przejdź do następnego folderu
- Jeśli NIE zostanie znaleziony, znajdź predefiniowane rozszerzenie i ustaw je jako ikonę folderu i przejdź do następnego folderu
źródło
Odpowiedzi:
Mogę nadal „trochę to wyrafinować”, ale poniżej są edytowane wersje tych powiązanych.
Jaka jest różnica?
Dodałem predefiniowaną listę do sekcji głowy:
i wymieniłem:
przez:
więc skrypt najpierw próbuje znaleźć (plik) dopasowania na liście
specs
((tylko), jeśli nie ma, przeskakuje do wyszukiwania pasującego rozszerzenia i wykonuje lewę, jeśli znajdzie odpowiedni obraz.1. Podstawowa wersja
Do użycia z katalogiem docelowym jako argumentem:
Jak używać
change_icon.py
Uruchom go z docelowym katalogiem jako argumentem:
Otóż to!
2. Zmodyfikowana opcja kliknięcia prawym przyciskiem, która ma być używana jako skrypt nautilus (kliknięcie prawym przyciskiem)
Używać
Utwórz, jeśli jeszcze nie istnieje, katalog
Skopiuj skrypt do pustego pliku, zapisz go
~/.local/share/nautilus/scripts
jakoset_foldericons
(bez rozszerzenia!) I spraw , aby był wykonywalny .Jeśli z jakiegoś powodu chcesz zresetować ikony w folderze do domyślnych ikon, użyj skryptu tutaj
źródło
file://
. Zamiast tegoreplace("%20", " ")
należy użyć właściwego dekodowania URI (np.urllib.parse.unquote
) I późniejszego kodowania (urllib.parse.quote
).subprocess.Popen
na,subprocess.call
ale w ogromnych katalogach z prawie 700+ sub, nie wszystkimi ikonami folderów.urllib.parse.quote
działa dobrze na „suchym” teście, nie w skrypcie. Musisz dowiedzieć się, dlaczego, ale na razie pozostawiając działającą wersję skryptu.unquote
działa zgodnie z oczekiwaniami?