Bagaimana saya bisa mengubah atau mengatur ikon untuk file atau folder, di terminal, apakah saya perlu menggunakan bahasa skrip?
script
icon
command-line
ocodo
sumber
sumber
Jawaban:
Anda perlu Alat Pengembang diinstal, dan kemudian berikut ini mungkin berfungsi. Ini mengambil grafik
icon.png
dan menerapkannyafile.ext
.sumber
Rez -append
saat bekerja dengan.avi
file.### Rez - Fatal error trying to open the resource file "Video.avi" for writing.
`ada ide?$PATH
(bertopik di/usr/bin
yang tahu di mana menemukan alat yang sebenarnya), dan tidak di/Developer/Tools
lagi, jadi Anda harus memanggil mereka hanya dengan nama file mereka; yaitu, dalam kasus ini, sebagai adilRez
danDeRez
.Dengan manfaat beberapa tahun ke belakang:
Jawaban user588 ini dan jawaban koiyu ini bekerja dengan baik, tetapi mereka bergantung pada utilitas (
Rez
,DeRez
, danSetFile
) bahwa:Rez
danDeRez
, karena mereka berhubungan dengan Carbon)osxiconutils terlihat menarik, tetapi tidak dapat dikompilasi lagi (pada OSX 10.10.4) .
Oleh karena itu saya telah membuat CLI
fileicon
, yang seharusnya bekerja pada mesin OSX yang asli (tidak ada prasyarat) ; ini adalah skrip Bash yang didasarkan terutama padaxattr
,xxd
dan skrip Python tersemat yang menyebut Cocoa, berdasarkan jawaban yang bermanfaat ini .Ini memungkinkan pengaturan / menghapus / mengekstraksi ikon khusus untuk / dari file atau folder , termasuk pada volume APFS pada macOS 10.13 (High Sierra).
Anda dapat menginstalnya sebagai berikut:
[sudo] npm install -g fileicon
fileicon
(tautan ini akan tetap terkini).chmod +x fileicon
.$PATH
, seperti/usr/local/bin
(memerlukansudo
).Inilah informasi penggunaannya; untuk informasi lengkap, lihat manual :
sumber
fileicon --man
).curl -L http://git.io/n-install | bash
.fileicon
, yang masih berfungsi (dan, pada kenyataannya, telah dibuat, karenaosxiconutils
tidak lagi berfungsi) - Saya telah memperbarui jawaban untuk membuatnya lebih jelas .Aku hampir mulai karunia ini, karena saya tidak berhasil mengubah ikon dari folder menggunakan @ Mankoff 's jawaban . Tetapi saya menemukan solusinya.
Untuk mengubah ikon folder Anda tidak menunjuk
Rez -append tmp.rsrc
ke folder tetapiIcon\r
file khusus di dalam folder. Jika Anda belum menetapkan ikon khusus ke folder sebelumnya, file tersebut mungkin tidak akan ada, tetapiRez
membuatnya secara langsung. MenghapusIcon\r
file akan menghapus ikon khusus, jadi untuk mencegah kecelakaan sebaiknya disembunyikan.Ini adalah modifikasi dari jawaban mankoff:
sumber
Selain Ruby, ini adalah versi Python:
./set-image.py image.png myfile
Python yang telah diinstal sebelumnya di Mac OS sudah memiliki PyObjC sehingga Anda tidak perlu menginstal paket apa pun.
sumber
Lihat
setfileicon
(kode sumber) , sebuah utilitas yang dibuat oleh Damien Bobillot.Unduh biner di sini: http://maxao.free.fr/telechargements/setfileicon.gz
Setelah membongkar file, membuatnya dapat dieksekusi:
Maka Anda dapat menggunakannya sebagai berikut:
sumber
Saya memiliki proyek github di mana saya membuat AppleScript "tetesan" dari skrip [shell / bash, python, perl, ruby, dll] yang mengambil jalur file sebagai argumen. Saya menulis fungsi bash ini untuk mengubah ikon folder (karena bundel AppleScript adalah Folder dengan ekstensi .app).
Setelah ditentukan, Anda memanggil fungsi dengan 2 argumen:
atau
Seperti yang Anda lihat, argumen kedua dapat berupa gambar di sistem Anda, atau URL.
CATATAN: Hal yang tampak gila
$'/Icon\r'
yang saya lakukan adalah karena nama file Ikon berakhir dengan carriage return literal\r
. Lihat sendiri:sumber
Dengan asumsi bahwa kita sudah memiliki file icns. Buat file sumber daya temp yang menunjuk ke file icns:
Tambahkan file sumber daya sebagai nilai atribut extended "com.apple.ResourceFork" ke file:
Tampilkan ikon file:
Tambahkan file sumber daya sebagai nilai atribut extended "com.apple.ResourceFork" ke file ikon ajaib di dalam folder saat ini:
Tampilkan ikon folder saat ini:
Sembunyikan file ikon ajaib di dalam folder saat ini (tekan ⇧⌘. Untuk menampilkan / menyembunyikan file tersembunyi di Finder):
Detil tambahan
Data ikon disimpan sebagai nilai atribut diperluas "com.apple.ResourceFork" (perintah Terminal "xattr -p com.apple.ResourceFork FileName.ext" mencetak nilai). Untuk folder ada file ajaib (yang kosong dan tersembunyi)
Icon$'\r'
di dalam folder. Untuk mengekstrak data ikon dari atribut diperluas "com.apple.ResourceFork" ke dalam file sumber daya teks biasa (dari mana kami tahu benar pengidentifikasi tipe icns "-16455"):Di bawah macOS 10.13, perintah Sierra Tinggi
$ sips -i ImageFile.icns/png/jpg
menghasilkan kesalahan "--addIcon tidak lagi didukung". Beralih "-i" berarti "--addIcon" sebagai atribut yang diperluas "com.apple.ResourceFork" ke file ini sendiri menggunakan konten file gambar ini.sumber
Opsi lain adalah menggunakan MacRuby:
/usr/local/bin/macruby -e 'framework "Cocoa";NSWorkspace.sharedWorkspace.setIcon(NSImage.alloc.initWithContentsOfFile("/tmp/a.png"),forFile:"/tmp/file",options:0)'
Anda dapat mengunduh pemasang untuk MacRuby dari http://macruby.org .
sumber
Anehnya, solusi terbaik tampaknya bukan menggunakan alat milik Apple tetapi kode Python karena memiliki berbagai kelebihan yang tidak dibatasi oleh:
(berfungsi hingga 1024x1024)
(dicoba dengan ICNS dan PNG)
(mendefinisikannya sebagai fungsi)
Memperbarui
Jawaban Now (di macOS Sierra) @ koiyu sepertinya berfungsi, jadi Anda bisa menggunakan dua-baris ini untuk menyalin ikon dari folder sumber ke folder tujuan Anda:
sumber
Dalam versi macOS terbaru (10.14),
sips -i icon.png
akan mendapatkan--addIcon is no longer supported
kesalahan.Itu juga perlu Alat Pengembang diinstal. Ini menggunakan grafik dalam
Icon.png
dan menerapkannyafile.ext
, seperti jawaban user588 :sumber
Sama seperti solusi Python menggunakan PyObjC, ternyata itu dapat dilakukan hanya dengan AppleScript (yang tidak ditinggalkan di 10.15 Catalina, tidak seperti Python dan bahasa scripting lainnya).
Saya menemukan contoh bagaimana melakukan ini di GitHub di sini:
AppleScript tidak mudah dibaca, tetapi tampaknya mungkin untuk mengakses kode Objective-C untuk melakukan ini melalui kerangka kerja AppKit.
sumber