【Jamf Pro】macOS のテーマに応じて DepNotify に表示させる画像を切り替える
はじめに
Jamf Pro で Prestage Enrollment を使って macOS のキッティングをする際、ユーザー体験向上の目的として DepNotify を使うことがあると思います。
この DepNotify、会社のロゴなど好きな画像を1枚表示させることができるのですが、例えば黒メインの画像の場合ではライトモードでは自然な見た目になりますがダークモードでは背景と紛れてしまい見た目が悪くなることがあります。
今回はこの画像を macOS のテーマによって異なる画像を表示させる Tips となります。
DepNotify とはなんぞやって人は?
こちらを参照してください。
前提条件
本記事は以下のバージョンを使用しています。
- depNotify.app
1.1.6
- depNotify.sh
2.0.7
作業前の準備
Mac に配布する DepNotify 用の画像はライトモード用とダークモード用の2ファイルが必要になります。
Jamf の Composer アプリを使う画像ファイル展開用の .pkg
ファイルの用意は各自で行ってください。
設定方法
ライトモード用の画像の設定
ライトモード用の画像は通常通り depNotify.sh
の 50 行目くらいにある BANNER_IMAGE_PATH
にファイルパスを指定してください。
# Banner image can be 600px wide by 100px high. Images will be scaled to fit
# If this variable is left blank, the generic image will appear. If using custom Self
# Service branding, please see the Customized Self Service Branding area below
BANNER_IMAGE_PATH="ライトモード用画像のファイルパス"
ダークモード用の画像の設定
ダークモード用の画像は、depNotify.sh
の 500 行目くらいにある # After the Apple Setup completed. Now safe to grab the current user and user ID
が書かれているコードセクションの後ろに以下のようにコードを追加してください。
# After the Apple Setup completed. Now safe to grab the current user and user ID
CURRENT_USER=$(/usr/bin/stat -f "%Su" /dev/console)
CURRENT_USER_ID=$(id -u $CURRENT_USER)
echo "$(date "+%a %h %d %H:%M:%S"): Current user set to $CURRENT_USER (id: $CURRENT_USER_ID)." >> "$DEP_NOTIFY_DEBUG"
# ダークモードの場合は、画像を差し替える
if [ -n "$CURRENT_USER" ]; then
OS_THEME_CONFIG_FILE="/Users/$CURRENT_USER/Library/Preferences/.GlobalPreferences.plist"
OS_THEME=$(/usr/libexec/PlistBuddy -c 'print :AppleInterfaceStyle' ${OS_THEME_CONFIG_FILE})
if [ "$OS_THEME" = "Dark" ]; then
# for Dark mode.
echo "$(date "+%a %h %d %H:%M:%S"): Enable Dark mode." >> "$DEP_NOTIFY_DEBUG"
BANNER_IMAGE_PATH="ダークモード用画像のファイルパス"
fi
fi
# Stop DEPNotify if there was already a DEPNotify window running (from a PreStage package postinstall script).
簡単な解説
テーマ設定はユーザーディレクトリ配下の ~/Library/Preferences/.GlobalPreferences.plist
に格納されています。
以下のコマンドで取得することが可能です。
/usr/libexec/PlistBuddy -c 'print :AppleInterfaceStyle' ~/Library/Preferences/.GlobalPreferences.plist
depNotify.sh
の中でユーザーが設定したテーマを取得する必要がありますが、このスクリプトは Jamf エージェントが実行するため相対パスで取得できません。
そのためにログインしているユーザー ID を取得して絶対パスで指定する必要があります。
# After the Apple Setup completed. Now safe to grab the current user and user ID
の箇所でログイン ID を取得しているのでその値を利用して絶対パスを特定しています。
最後に、テーマが Dark
と取得できたら BANNER_IMAGE_PATH
をダークモード用のファイルに上書きして完了です。
Discussion