optionalFeatures - macadmins/nudge GitHub Wiki


acceptableApplicationBundleIDs - Type: Array, Default Value: [], Required: No

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.

acceptableAssertionUsage - Type: Boolean, Default Value: False, Required: No

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.


acceptableAssertionApplicationNames - Type: Array, Default Value: [], Required: No

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.


acceptableCameraUsage - Type: Boolean, Default Value: False, Required: No

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.


acceptableScreenSharingUsage - Type: Boolean, Default Value: False, Required: No

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

v1.1.0 and later

When disabled, Nudge will not hide all non-acceptableApplicationBundleIDs after the requiredInstallationDate or allowedDeferrals.


aggressiveUserFullScreenExperience - Type: Boolean, Default Value: True, Required: No

v1.1.7 and later

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

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

v1.1.4 and later

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


attemptToFetchMajorUpgrade - Type: Boolean, Default Value: True, Required: No

v1.1.4 and later

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


attemptToBlockApplicationLaunches - Type: Boolean, Default Value: false, Required: No

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.


blockedApplicationBundleIDs - Type: Array, Default Value: [], Required: No

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 this would be:

  • 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.


disableSoftwareUpdateWorkflow - Type: Boolean, Default Value: False, Required: No

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

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


terminateApplicationsOnLaunch - Type: Boolean, Default Value: False, Required: No

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.


Example (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 (Mobile Configuration)

<?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** ⚠️