#!/bin/zsh # Intune script content must remain below 15360 characters. DIALOG_BIN='/usr/local/bin/dialog' if [[ ! -x "$DIALOG_BIN" ]]; then exit 0 fi CONSOLE_USER=$(/usr/bin/stat -f "%Su" /dev/console 2>/dev/null || true) if [[ -z "$CONSOLE_USER" || "$CONSOLE_USER" == "root" || "$CONSOLE_USER" == "loginwindow" ]]; then exit 0 fi CONSOLE_UID=$(/usr/bin/id -u "$CONSOLE_USER" 2>/dev/null || true) if [[ -z "$CONSOLE_UID" ]]; then exit 0 fi CONFIG_TITLE='Example App is ready' CONFIG_BODY='**Example App** version 2.0.0 was installed successfully.' AUTO_DISMISS_SECONDS=15 DIALOG_MESSAGE="$CONFIG_BODY" SUPPORT_NAME='' SUPPORT_EMAIL='' SUPPORT_PHONE='' SUPPORT_TEXT="" if [[ -n "$SUPPORT_NAME" ]]; then SUPPORT_TEXT="Name: ${SUPPORT_NAME}" fi if [[ -n "$SUPPORT_EMAIL" ]]; then [[ -n "$SUPPORT_TEXT" ]] && SUPPORT_TEXT+=$'\n' SUPPORT_TEXT+="Email: ${SUPPORT_EMAIL}" fi if [[ -n "$SUPPORT_PHONE" ]]; then [[ -n "$SUPPORT_TEXT" ]] && SUPPORT_TEXT+=$'\n' SUPPORT_TEXT+="Phone: ${SUPPORT_PHONE}" fi if [[ -n "$SUPPORT_TEXT" ]]; then DIALOG_MESSAGE+=$'\n\n**Support**\n'"$SUPPORT_TEXT" fi json_escape() { local value="$1" local escaped="" local char="" local index for (( index = 1; index <= ${#value}; index++ )); do char="${value[index]}" case "$char" in \\) escaped+="\\\\" ;; \") escaped+="\\\"" ;; $'\n') escaped+="\\n" ;; $'\r') escaped+="\\r" ;; $'\t') escaped+="\\t" ;; *) escaped+="$char" ;; esac done /usr/bin/printf "%s" "$escaped" } DIALOG_JSON=$(/usr/bin/printf '{"title":"%s","message":"%s","timer":%s}' "$(json_escape "$CONFIG_TITLE")" "$(json_escape "$DIALOG_MESSAGE")" "$AUTO_DISMISS_SECONDS") (/bin/launchctl asuser "$CONSOLE_UID" /usr/bin/sudo -u "$CONSOLE_USER" "$DIALOG_BIN" --style centered --position topright --jsonstring "$DIALOG_JSON" >/dev/null 2>&1 &) || true exit 0