端子を使用してファイルまたはフォルダーアイコンを変更するにはどうすればよいですか
-
16-10-2019 - |
質問
ファイルまたはフォルダーのアイコンを変更または設定するには、端末でスクリプト言語を使用する必要がありますか?
解決
開発者ツールがインストールされる必要があります。その後、以下が機能する場合があります。これにはグラフィックがかかります icon.png
に適用します file.ext
.
# Take an image and make the image its own icon:
sips -i icon.png
# Extract the icon to its own resource file:
/Developer/Tools/DeRez -only icns icon.png > tmpicns.rsrc
# append this resource to the file you want to icon-ize.
/Developer/Tools/Rez -append tmpicns.rsrc -o file.ext
# Use the resource to set the icon.
/Developer/Tools/SetFile -a C file.ext
# clean up.
rm tmpicns.rsrc
# rm icon.png # probably want to keep this for re-use.
他のヒント
数年の後知恵の恩恵を受けて:
user588の回答 と Koiyuの答え うまく機能しますが、彼らはユーティリティに依存しています(Rez
, DeRez
, 、 と SetFile
) それ:
- デフォルトでインストールされていません(Xcodeまたは開発者コマンドラインユーティリティが付属しています)
- 今は非推奨です(
Rez
とDeRez
, 、彼らは炭素に関連しているので)
OsxicOnutils 面白そうに見えますが、 もうコンパイルしません(OSX 10.10.4のように).
したがって、私は作成しました CLI fileicon
, 、 どれの 手付かずのOSXマシンで作業する必要があります(前提条件なし);主に基づいたバッシュスクリプトです xattr
, xxd
そして、cocoaを呼び出す埋め込まれたpythonスクリプト、提供: この役立つ答え.
それは許可します ファイルまたはフォルダーからのカスタムアイコンの設定/削除/抽出, 、MacOS 10.13(High Sierra)のAPFSボリュームを含む。
次のようにインストールできます。
- node.jsがインストールされている場合、 NPMレジストリから, 、 と
[sudo] npm install -g fileicon
- さもないと:
- ダウンロード CLI なので
fileicon
(このリンクは最新のままです)。 - で実行可能にします
chmod +x fileicon
. - それを移動するか、それをあなたのフォルダーにシンリンクします
$PATH
, 、 そのような/usr/local/bin
(必要sudo
).
- ダウンロード CLI なので
使用情報は次のとおりです。完全な情報については、を参照してください マニュアル:
$ fileicon -h
Set a custom icon for a file or folder:
fileicon set <fileOrFolder> <imageFile>
Remove a custom icon from a file or folder:
fileicon rm <fileOrFolder>
Get a file or folder's custom icon:
fileicon get [-f] <fileOrFolder> [<iconOutputFile>]
Test if a file or folder has a custom icon:
fileicon test <fileOrFolder>
-q ... silence status output
Standard options: --help, --man, --version, --home
私 ほとんど 私はのアイコンを変更することができなかったので、これについては賞金を始めました フォルダ @を使用するマンコフ's 答え. 。しかし、私は解決策を見つけました。
フォルダーのアイコンを変更するには、指し示さないようにします Rez -append tmp.rsrc
フォルダーにしかし特別な アイコン r
フォルダー内にファイル。以前にカスタムアイコンをフォルダーに設定していない場合、ファイルはおそらく存在しませんが、 Rez
それを作成します - – Fly。削除します Icon\r
ファイルはカスタムアイコンを削除するため、事故を防ぐために非表示にすることは良いことです。
これらは、マンコフの答えの修正です。
# Append a resource to the folder you want to icon-ize.
Rez -append tmpicns.rsrc -o $'myfolder/Icon\r'
# Use the resource to set the icon.
SetFile -a C myfolder/
# Hide the Icon\r file from Finder.
SetFile -a V $'myfolder/Icon\r'
Rubyに加えて、Pythonバージョンは次のとおりです。
#!/usr/bin/env python
import Cocoa
import sys
Cocoa.NSWorkspace.sharedWorkspace().setIcon_forFile_options_(Cocoa.NSImage.alloc().initWithContentsOfFile_(sys.argv[1].decode('utf-8')), sys.argv[2].decode('utf-8'), 0) or sys.exit("Unable to set file icon")
./set-image.py image.png myfile
Mac OSでプリインストールされたPythonにはすでにpyobjcがあるため、パッケージをインストールする必要はありません。
チェックアウト setfileicon
(ソースコード), 、Damien Bobillotによって作成されたユーティリティ。
ここからバイナリをダウンロードしてください: http://maxao.free.fr/telechargements/setfileicon.gz
ファイルを開梱した後、実行可能にします。
chmod +x setfileicon
次に、次のように使用できます。
./setfileicon "my-icon.icns" "my-file-or-directory"
私は持っています Githubプロジェクト Shell/Bash、Python、Perl、Rubyなど]の[shell/bash、python、perl、rubyなど]からapplescript「滴」を作成する場所。フォルダーのアイコンを変更するためにこのbash関数を書きました(applescriptバンドルは.app拡張機能を備えたフォルダーであるため)。
replace_icon(){
droplet="$1"
icon="$2"
if [[ "$icon" =~ ^https?:// ]]; then
curl -sLo /tmp/icon "$icon"
icon=/tmp/icon
fi
rm -rf "$droplet"$'/Icon\r'
sips -i "$icon" >/dev/null
DeRez -only icns "$icon" > /tmp/icns.rsrc
Rez -append /tmp/icns.rsrc -o "$droplet"$'/Icon\r'
SetFile -a C "$droplet"
SetFile -a V "$droplet"$'/Icon\r'
}
定義されたら、2つの引数で関数を呼び出します。
replace_icon /path/to/AppleScript.app /path/to/icon.png
また
replace_icon /path/to/AppleScript.app http://i.imgur.com/LmUvWqB.png
ご覧のとおり、2番目の引数は、システム上の画像、またはURLになります。
ノート: そのクレイジーな見た目 $'/Icon\r'
私がすることは、アイコンファイルの名前がで終わるからです リテラル キャリッジリターン \r
. 。あなた自身のために:
find my-applescript.app -maxdepth 1 | less -U
すでにICNSファイルがあると仮定しています。 ICNSファイルを指すTEMPリソースファイルを作成します。
$ echo "read 'icns' (-16455) \"Icon.icns\";" >> Icon.rsrc
拡張属性の値としてリソースファイルをファイルに追加します。
$ Rez -a Icon.rsrc -o FileName.ext
ファイルのアイコンを表示します。
$ SetFile -a C FileName.ext
拡張属性の値としてリソースファイルを追加する「com.apple.resourcefork」は、現在のフォルダー内の魔法のアイコンファイルに次のようになります。
$ Rez -a Icon.rsrc -o Icon$'\r'
現在のフォルダーのアイコンを表示します。
$ SetFile -a C .
現在のフォルダー内の魔法のアイコンファイルを非表示(Finderで非表示ファイルを表示/非表示にするには):
$ SetFile -a V Icon$'\r'
追加の詳細
アイコンデータは、拡張属性「com.apple.resourcefork」の値として保存されます(ターミナルコマンド "xattr -p com.apple.resourcefork filename.ext"値を印刷)。フォルダには魔法(空で隠されている)ファイルがあります Icon$'\r'
フォルダー内。拡張属性「com.apple.resourcefork」からアイコンデータを抽出するには、プレーンテキストリソースファイル(正しいICNSタイプ識別子 "-16455"):
$ DeRez -only icns FileWithIcon.ext > Icon.rsrc
$ DeRez -only icns /Folder/With/Icon/Icon$'\r' > Icon.rsrc
MACOS 10.13 High Sierraコマンドの下 $ sips -i ImageFile.icns/png/jpg
エラーを生成する「-addiconはサポートされなくなりました」。 switch "-i"は、「addicon」を拡張属性 "com.apple.resourcefork"として、このファイル自体にこの画像ファイルのコンテンツを使用して、このファイル自体に意味します。
別のオプションは、MacRubyを使用することです。
/usr/local/bin/macruby -e 'framework "Cocoa";NSWorkspace.sharedWorkspace.setIcon(NSImage.alloc.initWithContentsOfFile("/tmp/a.png"),forFile:"/tmp/file",options:0)'
MacRubyのインストーラーをからダウンロードできます http://macruby.org.
奇妙なことに、最良のソリューションは、Apple独自のツールではなく、Pythonコードを使用することではなく、次のような利点があるため、Pythonコードを使用することです。
- 出力ファイル解像度
(1024x1024まで動作します) - 入力ファイル形式
(ICNSとPNGで試してみてください) - インストールする権限
(それを関数として定義する)
アップデート
今(Macos Sierraで) @Koiyuの回答は機能しているようですので、この2ライナーを使用してソースフォルダーから宛先フォルダーにアイコンをコピーできます。
#!/bin/sh
DeRez -only icns $1/Icon$'\r' > icon.rsrc; Rez -a icon.rsrc -o $2/Icon$'\r'
SetFile -a C $2; SetFile -a V $2/Icon$'\r'; rm icon.rsrc
最近のMacOSバージョン(10.14)で sips -i icon.png
aを取得します --addIcon is no longer supported
エラー。
また、開発者ツールをインストールする必要がありました。これにはグラフィックがかかります Icon.png
に適用します file.ext
, 、 と同じように user588の回答:
# Covert Icon.png to tempicons.icns:
sips -s format icns Icon.png --out tmpicns.icns
# Create temp resource file which points to tempicons.icns:
echo "read 'icns' (-16455) \"tmpicns.icns\";" >> tmpicns.rsrc
# append this resource to the file you want to icon-ize.
Rez -a tmpicns.rsrc -o file.ext
# Use the resource to set the icon.
SetFile -a C file.ext
# Clean up
rm tempicons.icns && rm tmpicns.rsrc