📝

【Jamf Pro】macOS のテーマに応じて DepNotify に表示させる画像を切り替える

2022/07/20に公開

はじめに

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 にファイルパスを指定してください。

depNotify.sh
# 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 が書かれているコードセクションの後ろに以下のようにコードを追加してください。

depNotify.sh
# 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 をダークモード用のファイルに上書きして完了です。

GitHubで編集を提案

Discussion