Jak mogę zmienić lub ustawić ikonę pliku lub folderu, czy w terminalu muszę używać języka skryptowego?
script
icon
command-line
ocodo
źródło
źródło
Odpowiedzi:
Musisz zainstalować Narzędzia programistyczne, a następnie mogą działać następujące. To bierze grafikę
icon.png
i stosuje jąfile.ext
.źródło
Rez -append
pracą z.avi
plikami.### Rez - Fatal error trying to open the resource file "Video.avi" for writing.
„jakieś pomysły?$PATH
(kody pośredniczące, w/usr/bin
których wiedzą, gdzie znaleźć rzeczywiste narzędzia), a nie/Developer/Tools
już, więc powinieneś je wywoływać tylko według ich nazw plików; tzn. w rozpatrywanym przypadku jako sprawiedliwyRez
iDeRez
.Z kilkuletnim doświadczeniem z perspektywy czasu:
Odpowiedź user588 za i odpowiedź koiyu za dobrze, ale opierają się one na media (
Rez
,DeRez
, iSetFile
), że:Rez
iDeRez
ponieważ dotyczą węgla)osxiconutils wyglądają interesująco, ale nie będą się już kompilować (od OSX 10.10.4) .
Dlatego stworzyłem CLI
fileicon
, który powinien działać na nieskazitelnym komputerze OSX (bez wymagań wstępnych) ; Jest to skrypt Bash głównie w oparciuxattr
,xxd
a wbudowany skrypt Pythona, który nazywa kakao, dzięki uprzejmości tym pomocne odpowiedzi .Pozwala ustawić / usunąć / wyodrębnić niestandardowe ikony dla / z plików lub folderów , w tym na woluminach APFS w systemie macOS 10.13 (High Sierra).
Możesz zainstalować go w następujący sposób:
[sudo] npm install -g fileicon
fileicon
(ten link pozostanie aktualny).chmod +x fileicon
.$PATH
, takiego jak/usr/local/bin
(wymagasudo
).Oto informacje o użyciu; pełne informacje można znaleźć w instrukcji :
źródło
fileicon --man
).curl -L http://git.io/n-install | bash
.fileicon
, które wciąż działa (i faktycznie zostało utworzone, ponieważosxiconutils
już nie działa) - zaktualizowałem odpowiedź, aby była bardziej przejrzysta .I prawie zaczął bounty na ten temat, bo nie udało się zmienić ikonę w folderze przy użyciu @ mankoff „s odpowiedź . Ale znalazłem rozwiązanie.
Aby zmienić ikonę folderu, nie wskazujesz
Rez -append tmp.rsrc
folderu, ale specjalnyIcon\r
plik w folderze. Jeśli wcześniej nie ustawiłeś niestandardowej ikony w folderze, plik prawdopodobnie nie będzie istniał, aleRez
zostanie utworzony „w locie”. UsunięcieIcon\r
pliku spowoduje usunięcie niestandardowej ikony, więc aby zapobiec wypadkom, dobrze jest je ukryć.Oto modyfikacje odpowiedzi mankoffa:
źródło
Oprócz Ruby, oto wersja Python:
./set-image.py image.png myfile
Python wstępnie zainstalowany w systemie Mac OS ma już PyObjC, więc nie musisz instalować żadnych pakietów.
źródło
Sprawdź
setfileicon
(kod źródłowy) , narzędzie stworzone przez Damiena Bobillota.Pobierz plik binarny tutaj: http://maxao.free.fr/telechargements/setfileicon.gz
Po rozpakowaniu pliku, wykonaj go:
Następnie możesz użyć go w następujący sposób:
źródło
Mam projekt github, w którym tworzę „kropelki” AppleScript ze skryptów [shell / bash, python, perl, ruby itp.], Które przyjmują ścieżki plików jako argumenty. Napisałem tę funkcję bash do zmiany ikony folderu (ponieważ pakiety AppleScript są folderami z rozszerzeniem .app).
Po zdefiniowaniu wywołujesz funkcję z 2 argumentami:
lub
Jak widać, drugim argumentem może być obraz w systemie lub adres URL.
UWAGA: To szalone
$'/Icon\r'
, co robię, to dlatego, że nazwa pliku ikony kończy się dosłownym znakiem powrotu karetki\r
. Przekonaj się dzięki:źródło
Zakładając, że mamy już plik icns. Utwórz plik zasobów tymczasowych, który wskazuje plik icns:
Dołącz plik zasobów jako wartość rozszerzonego atrybutu „com.apple.ResourceFork” do pliku:
Pokaż ikonę pliku:
Dołącz plik zasobów jako wartość rozszerzonego atrybutu „com.apple.ResourceFork” do pliku ikony magii w bieżącym folderze:
Pokaż ikonę bieżącego folderu:
Ukryj plik magicznej ikony w bieżącym folderze (naciśnij ⇧⌘., Aby pokazać / ukryć ukryte pliki w Finderze):
Dodatkowe Szczegóły
Dane ikony są przechowywane jako wartość rozszerzonego atrybutu „com.apple.ResourceFork” (polecenie terminalu „xattr -p com.apple.ResourceFork nazwa_pliku.ext” wyświetla wartość). Dla folderu znajduje się magiczny (pusty i ukryty) plik
Icon$'\r'
wewnątrz folderu. Aby wyodrębnić dane ikony z rozszerzonego atrybutu „com.apple.ResourceFork” do zwykłego pliku tekstowego (z którego wiemy poprawny identyfikator typu icns „-16455”):W systemie macOS 10.13 polecenie High Sierra
$ sips -i ImageFile.icns/png/jpg
generuje błąd „--addIcon nie jest już obsługiwany”. Przełączenie „-i” oznacza „--addIcon” jako atrybut rozszerzony „com.apple.ResourceFork” na sam plik przy użyciu zawartości tego pliku obrazu.źródło
Inną opcją jest użycie MacRuby:
/usr/local/bin/macruby -e 'framework "Cocoa";NSWorkspace.sharedWorkspace.setIcon(NSImage.alloc.initWithContentsOfFile("/tmp/a.png"),forFile:"/tmp/file",options:0)'
Możesz pobrać instalator dla MacRuby ze strony http://macruby.org .
źródło
O dziwo, najlepszym rozwiązaniem wydaje się nie używanie własnych narzędzi Apple, ale kodu Python, ponieważ ma on różne zalety, które nie są ograniczone przez:
(działa do 1024x1024)
(wypróbowany z ICNS i PNG)
(zdefiniuj jako funkcję)
Aktualizacja
Teraz (na macOS Sierra) odpowiedź @ koiyu wydaje się działać, więc możesz użyć tego dwuliniowego, aby skopiować ikonę z folderu źródłowego do folderu docelowego:
źródło
W najnowszej wersji systemu macOS (10.14)
sips -i icon.png
pojawi się--addIcon is no longer supported
błąd.Wymagało to również zainstalowania Narzędzi programisty. To pobiera grafikę
Icon.png
i stosuje jąfile.ext
, podobnie jak odpowiedź user588 :źródło
Okazuje się, że podobnie jak rozwiązanie Python wykorzystujące PyObjC, można to zrobić za pomocą samego AppleScript (który nie jest przestarzały w Catalina 10.15, w przeciwieństwie do Pythona i innych języków skryptowych).
Tutaj znalazłem przykład tego, jak to zrobić w GitHub:
AppleScript nie jest łatwy do odczytania, ale najwyraźniej można uzyskać dostęp do kodu Objective-C, aby to zrobić za pośrednictwem frameworku AppKit.
źródło