この内容は、前回の記事の改良版です。
Photoshopカラー設定内容をメニューバーに表示させる
Photoshopカラー設定は「間違えると絶対色が変わってしまう」ようなものでは実はなくて、プロファイルの扱いを分かっていて、適切に設定されていれば、開くとき・保存時のクリック数が少し減ってラクだよ、くらいの意味しかありません。それでも今の状態をすぐに把握できると便利なので、メニューバーに表示させます。
ACEConfigCache2.lstというファイル
Photoshop/InDesign/Illustratorのカラー設定は、Bridgeで同期させられます。ということは、どこかに同期・共有用のファイルがあるはず。それがユーザライブラリ以下にあるこのファイルです。
~/Library/Preferences/Adobe/Color/ACEConfigCache2.lst
バイナリなので、読めるようにします。od
してtr
で整形。
od -A n -c -v /Users/yamo/Library/Preferences/Adobe/Color/ACEConfigCache2.lst | tr -d ' \\*\n'
ここには、Illustrator、Photoshop、InDesign(AIRobin)のカラー設定内容が書かれています。ファイルを消してから各アプリを起動(&Photoshop以外はカラー設定開いて設定)すると分かりますが、記載順はアプリの起動順です。例えばPhotoshopしか起動したことがなければ、内容にはPhotoshopのカラー設定しか記載されません。また、Photoshop2023/2021/2019と複数バージョンを起動するとその分増えていきます。
前回は、この中にカラー設定プリセット名称が含まれていることは分かったのですが、プリセットから外れたCustom
の状態だと名称はそのまま残るため正しく取得できず、結局AppleScriptでPhotoshopに問い合わせていました。
が、カスタム(プリセットから外れた状態)のとき変わるところがあるのを発見しました。
赤枠部10
がCustom
の印で、プリセット名称を持っているならここは00
になります。続いてアプリケーションパスがあるので、ここでは正規表現を使い00/10を調べます。10なら文字列Custom
を出力、00ならアプリケーション(バージョン)名と.csf0033
に挟まれたプリセット名称を取得します。
csf0033
ではなく、cfs
で止めた方がいいみたいです。csf0034
と数値が変わっていました。
#!/bin/bash
export LANG=ja_JP.UTF-8
ColorSettings=/Users/yamo/.PSColorSettings_out.txt
lstdump=`od -A n -c -v /Users/yamo/Library/Preferences/Adobe/Color/ACEConfigCache2.lst | tr -d ' \\\*\n'`
customcheck=`echo $lstdump | perl -pe 's/.+(..).\/Applications\/AdobePhotoshop2023.+/$1/'`
if [ $customcheck = "10" ]; then
echo "⚠️カスタム" > $ColorSettings
else
echo $lstdump | perl -pe 's/.+?Photoshop2023\.app.+?([^\/]+?)\.csf.+/$1/' > $ColorSettings
fi
デフォルトプリセット名、例えば一般用-ナントカ、はローカライズされた名前で、AppleScriptやこのファイルに記載されているのはローカライズ前の名称です。
当然自分で作ったプリセット名称はそのままです。
これで設定ファイルからプリセット名(&カスタム状態)を取得できました。ファイルはホーム直下に見えない状態で保存しておきます。
ローカライズ名を出したい
勝手ローカライズファイルを用意します。
JapanWebInternet,Web・インターネット用 - 日本
JapanPrepress,プリプレス用 - 日本2
MonitorColor,モニタのカラー設定に合わせる
JapanGeneralPurpose,一般用 - 日本2
JapanMagazine,日本 - 雑誌広告用
JapanNewspaper,日本 - 新聞用
EuropeWebInternet2,Web・インターネット用 - ヨーロッパ2
NorthAmericaWebInternet,Web・インターネット用 - 北米
EuropePrepress3,プリプレス用 - ヨーロッパ3
NorthAmericaPrepress,プリプレス用 - 北米2
EuropeGeneralPurpose3,一般用 - ヨーロッパ3
NorthAmericaGeneralPurpose,一般用 - 北米2
JapanGeneralPurpose3,一般用 - 日本3
NorthAmericaNewspaper,新聞用 - 北米
メニューバーに表示させるのですから、自分で短く表記しちゃってください。
解析スクリプトは次のように書き換えます。
#!/bin/bash
export LANG=ja_JP.UTF-8
#書き出し先とローカライズファイル(カンマ区切りテキスト)
ColorSettings=/Users/yamo/.PSColorSettings_out.txt
ColorTranslation=/Users/yamo/UTL/colorTranslation.txt
#読み出すPhotoshopバージョン(Photoshopに続くもの)
photoshop=2023
#ACE…lstをテキスト化
lstdump=$(od -A n -c -v /Users/yamo/Library/Preferences/Adobe/Color/ACEConfigCache2.lst | tr -d ' \\\*\n')
#Photoshop2023のカラー設定がカスタム(プリセット名を持っていない)かチェックする箇所を取り出し
customcheck=$(echo $lstdump | perl -pse 's/.+(..).\/Applications\/AdobePhotoshop.?$PS.+/$1/' -- -PS=$photoshop)
#もしチェック箇所が10ならカスタム、00ならプリセット名あり
if [ ${customcheck} = "10" ]; then
CSOut="⚠️カスタム"
else
#プリセット名を取り出す
CSOut=$(echo ${lstdump} | perl -pse 's/.+?Photoshop.?$PS\.app.+?([^\/]+?)\.csf.+/$1/' -- -PS=$photoshop)
#プリセット名に対応するローカライズされた名前があるか調べる
CSOutTrans=$(echo ${CSOut} | xargs -n 1 -I{} awk -F "," '$1 == mycolor {print $2}' mycolor={} ${ColorTranslation})
#ある(Transが空でない)場合は出力用変数を入れ替える
if [ "${CSOutTrans}" != "" ]; then
CSOut=$CSOutTrans
fi
fi
#テキストファイルに出力する
#うまく取得できていない場合はエラーを返す。※PsBETAを起動した場合勝手に上書きするためエラーになる
if [ ${#CSOut} -gt 20 ];then
echo "‼️Error" > $ColorSettings
else
echo $CSOut > $ColorSettings
fi
リスト中と同じ名前があった場合、awkでローカライズ名を取り出しています。
ですのでもし全く同じ、例えばMonitorColor
という名前だと日本語に置き換わってしまいます。
最初からあるローカライズされるプリセット類は、設定ファイルのパスに/Recommended/
がついているので、それで処理を分けてもいいでしょう
fswatchで監視させる
brew install fswatch
してインストールしておきます。
fswatch -o -l 6 [監視ファイル.lst] | xargs -n 1 [↑で書いたPsColor2Menubar.shのパス]
すると、変更がある度にPsColor2Menubar.shを実行します。ただ、Photoshopをアクティブにするだけでファイルの書き換えが行われ、カラー設定のプルダウンを変えただけでも書き換えられているため、あまりに頻度が高いとコマンド類がいろいろ詰まってよくありません。意味無いし…なので、-o
オプションで、-l 6
秒ごとの出力数をまとめてしまいます。6秒なのはテキトウです。ある程度ぱっと変わって欲しいし。
Lingon Xで設定する
Lingon Xは有料ですが、面倒くさいplist書くより買った方がいいです。
これでOSに起動時、fswatchを実行させます。
新規作成して、
シェルコマンドを入力します。
最初は直接以下のコマンドを書いていたのですが、「複雑過ぎるみたいだけどスクリプトファイルに書き出したほうがいいかもよ」と警告してくれるのでその通りにすれば、shファイルを自動で書いてリンクしてくれます。
/opt/homebrew/bin/fswatch -o -l 6 /Users/yamo/Library/Preferences/Adobe/Color/ACEConfigCache2.lst | xargs -n 1 /Users/yamo/UTL/PSColor2Menubar.sh
はい、これで、起動したらfswatchが6秒ごとにファイルをチェックし、変更があった場合ACEConfigCache2.lst
ファイルを解析してプリセットから外れている=>カスタム、そうでなければプリセット名を書いたファイルを書き出すことができました。
あとは、このファイルをxbarでメニューバーに表示させます。
xbarでメニューバーに表示させる。
brew install xbar
しときましょう。
xbarのプラグインフォルダーに、このファイルを入れるとそのまま表示します。ただ、先のファイルをcatするだけ。実行間隔はファイル名に書き込みます。
#!/bin/bash
cat /Users/yamo/.PSColorSettings_out.txt
以上!
結局Photoshopにtell application id "com.adobe.phtoshop" to color settings
する必要がなくなりました。前回Keyboard MaestroはPhotoshop起動数(複数起動)を調べて、PhotoshopがなくなればLaunchctlでオフにしていたんですが、それも面倒くさいからやめましょう。どうせPhotoshop常に起動してるしうちは……🐸