-
Notifications
You must be signed in to change notification settings - Fork 3
App Setup Helper
The App Setup Helper tool guides users through enabling Screen Recording permissions for specified applications on macOS and consolidates permission requests into a single prompt for multiple applications. By leveraging macOS's Privacy & Security settings, this tool facilitates Screen Recording configuration to support applications such as video conferencing or screen sharing software. It utilizes native SwiftUI to provide an intuitive user interface that presents a single consolidated prompt for all apps listed in the --appNames
parameter, monitors their status, and updates the display dynamically.
In this example, we prompt the user to enable screen recording for both Google Chrome and Zoom, with a 5 minute timeout. To set this up, you will need:
- Configuration Profile
- Policy
Below is a Managed PLIST that can be deployed through a Configuration Profile to the following domain: tech.rocketman.appsetuphelper
<?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>appNames</key>
<array>
<string>Zoom:us.zoom.xos</string>
<string>Chrome:com.google.chrome</string>
</array>
<key>title</key>
<string>Enable Screen Recording for Apps</string>
<key>message</key>
<string>Screen sharing needs to be enabled for the following application(s).</string>
<key>timeout</key>
<integer>300</integer>
</dict>
</plist>
When setting up the Launch a Tool Script in Jamf Pro, use the following script parameters:
-
Parameter 4 (Global Options and Tool Name):
AppSetupHelper
Defines the applications requiring Screen Recording permissions. Each application is specified as "Display Name:BundleID"
, where:
-
Display Name is the name shown to the user.
-
BundleID is the application’s unique identifier, which can be obtained using the command
osascript -e 'id of app "App Name"'
. -
Type: array of strings
-
Example:
rocketman AppSetupHelper --appNames "Chrome:com.google.chrome" "Zoom:us.zoom.xos"
Sets the title text for the dialog window.
- Type: string
- Default: "Enable Screen Sharing"
-
Example:
rocketman AppSetupHelper --title "Enable Screen Recording for Apps"
Defines the body text displayed within the dialog window.
- Type: string
- Default: "Screen sharing needs to be enabled for the following application(s)."
-
Example:
rocketman AppSetupHelper --message "Screen recording permissions are required for the following applications:"
Provides the full path to an icon file to be displayed in the dialog window.
- Type: string
- Default: "/Library/Application Support/Rocketman/logo.png"
-
Example:
rocketman AppSetupHelper --icon "/Library/Application Support/Rocketman/logo.png"
Specifies the domain for storing options in local or managed plists. This setting allows for persistent configuration management.
- Type: string
- Default: "tech.rocketman.appsetuphelper"
-
Example:
rocketman AppSetupHelper --domain "tech.rocketman.customdomain"
Sets the width of the dialog box in pixels.
- Type: string
- Default: "615"
-
Example:
rocketman AppSetupHelper --width "700"
Sets the height of the dialog box in pixels.
- Type: string
- Default: "615"
-
Example:
rocketman AppSetupHelper --height "400"
Defines the time in seconds to wait for the user to enable Screen Recording for the listed applications. After this period, the tool will exit.
- Type: integer
- Default: 300 seconds
-
Example:
rocketman AppSetupHelper --timeout 600
Below is a command configuring the App Setup Helper tool with multiple applications, a customized dialog title, body message, timeout setting, and icon.
rocketman AppSetupHelper \
--appNames "Chrome:com.google.chrome" "Zoom:us.zoom.xos" \
--title "Enable Screen Recording for Applications" \
--message "Please allow screen recording for the applications listed below." \
--icon "/Library/Application Support/Rocketman/logo.png" \
--timeout 600
- When running this tool through Terminal for testing purposes, it will require Terminal to have Full Disk Access. This is because Terminal is technically executing the tool. However, if deployed more commonly through a Jamf Policy, this won't be an issue because Jamf Pro already has the required PPPC profile to run with full disk access.
{
"title": "App Setup Helper (tech.rocketman.appsetuphelper)",
"description": "A tool that guides users through the process of enabling Screen Recording on their Macs.",
"properties": {
"appNames": {
"title": "App Names",
"description": "The Display Name and Bundle ID of the app(s) that you want the user to enable screen sharing for. This is done by defining both the display name that will be shown and the bundle ID of the app, separated by a colon. Note, this parameter can be used multiple times to define multiple applications.",
"property_order": 1,
"type": "array",
"items": {
"type": "string",
"title": "Application Name",
"default": "Google Chrome:com.google.chrome"
}
},
"title": {
"title": "Dialog Title",
"description": "The Title in the window that the user sees",
"property_order": 2,
"type": "string",
"default": "Enable Screen Recording for Apps"
},
"message": {
"title": "Dialog Message",
"description": "The body text of the dialog window",
"property_order": 3,
"type": "string",
"default": "Screen recording permissions are required for the following applications:"
},
"icon": {
"title": "Dialog Icon Path",
"description": "Full path to the icon added to the window",
"property_order": 4,
"type": "string",
"default": "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ToolbarInfo.icns"
},
"width": {
"title": "Dialog Width",
"description": "Width of dialog box",
"property_order": 5,
"type": "string",
"default": 700
},
"height": {
"title": "Dialog Height",
"description": "Height of dialog box",
"property_order": 6,
"type": "string",
"default": 400
},
"timeout": {
"title": "Dialog Timeout",
"description": "Time in seconds to wait for the user to enable screen recording before timing out.",
"property_order": 7,
"type": "integer",
"default": 600
}
},
"required": [
"appNames"
]
}
Tip
Professional setup, custom integrations, and SLA-backed support are available.
➡️ Learn more
-
Encrypt
Encrypt any string. -
App Setup Helper
Enables Screen Recording for apps. -
Break Glass Admin
Manages emergency admin accounts. -
Edit User Profile
Updates building and department info. -
FileVault Token Revoker
Removes FileVault tokens. -
Get Backdoor Admin Password From Keychain
Retrieves backdoor admin passwords. -
List All FileVault Enabled Users
Lists FileVault-enabled users. -
Rapid Response
Triggers scripts immediately. -
Rename Computer
Renames Macs via Jamf. -
Reset Jamf Connect Login Screen
Switches to macOS login. -
Secure Token Sharing Tool
Grants secure tokens. -
Self Service Email
Creates pre-filled emails. -
Temporary Admin
Grants temporary admin rights. -
Update User Info
Syncs user data with Jamf. -
Upload Jamf Logs
Uploads log files to Jamf. -
User Privilege Management
Adjusts user roles. -
Change Static Group Membership
Change Static Group Membership -
Fetch Database
Fetch Database