OptionalFeatures - macadmins/nudge GitHub Wiki

Optional Features

Preferences

acceptableApplicationBundleIDs

  • Type: Array
  • Default Value: []
  • Required: No
  • Version: v1.1.7 and later

The application Bundle ID which Nudge allows without taking focus. (You can specify one or more Bundle ID.)

Disables Nudge's re-activation logic for the listed applications. If one of the specified applications is foremost, Nudge will not reactivate itself. (This feature does not work for Nudge's initial activation.)

  • Xcode is forced added to the acceptableApplicationsList when Nudge is running in debug mode.

acceptableAssertionApplicationNames

  • Type: Array
  • Default Value:
  • Required: No
  • Version: v1.1.7 and later

The application names using assertions which Nudge allows without taking focus. You can specify one or more applications. To find the names please run /usr/bin/pmset -g assertions in Terminal while the application is open and running.

For example this would be:

  • zoom.us
  • Meeting Center

Requires acceptableAssertionUsage to be enabled.


acceptableAssertionUsage

  • Type: Boolean
  • Default Value: False
  • Required: No
  • Version: v1.1.7 and later

When enabled, Nudge will not activate or re-activate when assertions are currently set by an application specified in acceptableAssertionApplicationNames.

Assertions, an Apple term, can be set by applications to request macOS disable things like display or system sleep. Some example can be found here: Apple Developer: IOPMAssertionTypes

Written as a potential mitigation for applications that are not detected by acceptableCameraUsage and acceptableScreenSharingUsage.


acceptableCameraUsage

  • Type: Boolean
  • Default Value: False
  • Required: No
  • Version: v1.1.7 and later

When enabled, Nudge will not activate or re-activate when the camera is on.

Note: acceptableCameraUsage will be ignored by Nudge when the host computer has passed the required installation date.


acceptableUpdatePreparingUsage

  • Type: Boolean
  • Default Value: True
  • Required: No
  • Version: v2.0 and later

When enabled, Nudge will not activate or re-activate when an update is being downloaded, prepared or staged.

Note: Nudge can now bypass activations and re-activations when a macOS update is Downloading, Preparing or Staged for installation. To disable this functionality, set this preference to 'false'.


acceptableScreenSharingUsage

  • Type: Boolean
  • Default Value: False
  • Required: No
  • Version: v1.1.7 and later

When enabled, Nudge will not activate or re-activate when screen sharing is active.

Note: acceptableScreenSharingUsage will be ignored by Nudge when the host computer has passed the required installation date.


aggressiveUserExperience

  • Type: Boolean
  • Default Value: True
  • Required: No
  • Version: v1.1.0 and later

When disabled, Nudge will not hide all applications not defined in acceptableApplicationBundleIDs after the requiredInstallationDate or allowedDeferrals.


aggressiveUserFullScreenExperience

  • Type: Boolean
  • Default Value: True
  • Required: No
  • Version: v1.1.7

When disabled, Nudge will not create a blurred background when the computer is passed the deferral window.


asyncronousSoftwareUpdate (Deprecated)

  • Type: Boolean
  • Default Value: True
  • Required: No
  • Version: v1.1.3 and earlier

When disabled, Nudge will wait for Software Update to finish downloading (if any) updates before showing its UI.

Deprecated for asynchronousSoftwareUpdate


asynchronousSoftwareUpdate

  • Type: Boolean
  • Default Value: True
  • Required: No
  • Version: v1.1.4 and later

When disabled, Nudge will wait for Software Update to finish downloading (if any) updates before showing its UI.


attemptToBlockApplicationLaunches

  • Type: Boolean
  • Default Value: False
  • Required: No
  • Version: v1.1.7 and later

When enabled, Nudge will attempt to block application launches after the required installation date.

This key must be used in conjunction with blockedApplicationBundleIDs.

A Notification Profile should be implemented so the user can see why the application is closed.


attemptToCheckForSupportedDevice

  • Type:
  • Default Value:
  • Required:
  • Version: v2.0 and later

When disabled, Nudge will no longer compare the current device against the SOFA feed for the required update. If the device cannot install this update, Nudge will not present the Unsupported UI."


attemptToFetchMajorUpgrade

  • Type: Boolean
  • Default Value: True
  • Required: No
  • Version: v1.1.4

When disabled, Nudge will not attempt to download a major upgrade application via softwareupdate.


blockedApplicationBundleIDs

  • Type: Array
  • Default Value: []
  • Required: No
  • Version: v1.1.7 and later

The application Bundle ID which Nudge blocks from launching after the required installation date. You can specify one or more Bundle ID.

For example, to block Zoom and Word:

  • us.zoom.xos
  • com.microsoft.Word

Note: Do not try to block com.apple.finder in conjunction with terminateApplicationsOnLaunch as launchd will immediately try relaunch it causing loopy behaviour.


customSOFAFeedURL

  • Type: String
  • Default Value: []
  • Required: No
  • Version: v2.0 and later

A URL path to use a custom SOFA feed.


disableNudgeForStandardInstalls

  • Type: Boolean
  • Default Value: False
  • Required: No
  • Version: v2.0 and later

When utilizing a SOFA feed and disableNudgeForStandardInstalls is true, Nudge will only enforce updates with published CVEs.


disableSoftwareUpdateWorkflow

  • Type: Bool
  • Default Value: False
  • Required: No
  • Version: v1.1.5 and later

When enabled, Nudge will not attempt to download a minor update via softwareupdate.

See also: majorUpgradeAppPath


enforceMinorUpdates

  • Type: Boolean
  • Default Value: True
  • Required: No
  • Version: v1.1.0 and later

When enabled, Nudge will enforce minor updates. This should likely never be disabled.


honorFocusModes

  • Type: Boolean
  • Default Value: False
  • Required: No
  • Version: v2.0 and later

When enabled, Nudge will not activate or re-activate when a user is in DoNotDisturb/Focus status. This feature is expiremental and may not work in all user settings.


refreshSOFAFeedTime

  • Type: Integer
  • Default Value: 86400
  • Required: No
  • Version: v2.0 and later

The maximum age the cached SOFA feed file can be on disk. When this file age expires, Nudge will re-assess the SOFA feed for updates. Please be mindful of changing this value as there is an associated cost for maintaining the SOFA service.


terminateApplicationsOnLaunch

  • Type: Boolean
  • Default Value: False
  • Required: No
  • Version: v1.1.7 and later

When enabled, Nudge will terminate the applications listed in blockedApplicationBundleIDs upon initial launch.

A Notification Profile should be implemented so the user can see why the application is closed.


utilizeSOFAFeed

  • Type: Boolean
  • Default Value: True
  • Required: No
  • Version: v2.0 and later

When enabled, Nudge will utilize the SOFA feed url for update data.


Examples

Example Configuration - JSON

{
  "optionalFeatures": {
    "acceptableAssertionApplicationNames": [
        "zoom.us",
        "Meeting Center",
        "Google Chrome",
        "Safari"
    ],
    "acceptableAssertionUsage": true,
    "acceptableApplicationBundleIDs": [
      "us.zoom.xos",
      "com.cisco.webexmeetingsapp"
    ],
    "asynchronousSoftwareUpdate": true,
    "attemptToFetchMajorUpgrade": true,
    "enforceMinorUpdates": true
  },
}

Example Configuration - Mobile

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>PayloadContent</key>
    <array>
      <dict>
        <key>PayloadDescription</key>
        <string>Configures optionalFeatures preferences</string>
        <key>PayloadDisplayName</key>
        <string>Nudge Preferences</string>
        <key>PayloadIdentifier</key>
        <string>com.github.macadmins.Nudge.preferences.example.optionalFeatures</string>
        <key>PayloadOrganization</key>
        <string></string>
        <key>PayloadType</key>
        <string>com.github.macadmins.Nudge</string>
        <key>PayloadUUID</key>
        <string>CA02957C-7472-446B-9F77-3E0414405556</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>optionalFeatures</key>
        <dict>
          <key>acceptableApplicationBundleIDs</key>
          <array>
            <string>us.zoom.xos</string>
          </array>
          <key>asynchronousSoftwareUpdate</key>
          <true/>
          <key>attemptToFetchMajorUpgrade</key>
          <true/>
          <key>enforceMinorUpdates</key>
          <true/>
        </dict>
      </dict>
    </array>
    <key>PayloadDescription</key>
    <string>Configures Nudge application</string>
    <key>PayloadDisplayName</key>
    <string>Nudge</string>
    <key>PayloadIdentifier</key>
    <string>com.github.macadmins.Nudge.example.optionalFeatures</string>
    <key>PayloadOrganization</key>
    <string>Nudge</string>
    <key>PayloadScope</key>
    <string>System</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>2F54F734-132D-4539-B583-F1DCF23DB5EB</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
  </dict>
</plist>
⚠️ **GitHub.com Fallback** ⚠️