端子を使用してファイルまたはフォルダーアイコンを変更するにはどうすればよいですか

apple.stackexchange https://apple.stackexchange.com/questions/6901

  •  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または開発者コマンドラインユーティリティが付属しています)
  • 今は非推奨です(RezDeRez, 、彼らは炭素に関連しているので)

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).

使用情報は次のとおりです。完全な情報については、を参照してください マニュアル:

$ 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
ライセンス: CC-BY-SA帰属
所属していません apple.stackexchange
scroll top