"Enhanced" version of SetDefaultapps by Scott E Kendall
SetDefaultAppsX is a macOS script that allows users to set default applications for various file types (mailto, http, ftp, documents, etc.) using a graphical dialog interface.
- Install utiluti: https://github.com/scriptingosx/utiluti
- Run the script:
./SetDefaultAppsX.sh
That's it! The script will automatically:
- Download and install swiftDialog if needed
- Create directories in
/Users/Shared/SetDefaultAppsX/ - Run without requiring sudo
- macOS (Apple Silicon or Intel)
- utiluti - Command-line tool for managing UTI (Uniform Type Identifier) associations
- Will be automatically downloaded and installed if not present
- Source: https://github.com/scriptingosx/utiluti
- swiftDialog - swift UI for clean dialogs
- Will be automatically downloaded and installed if not present
- Source: https://github.com/bartreardon/swiftDialog
Note: The preparation script is optional. If not run, SetDefaultAppsX will automatically create directories in /Users/Shared/SetDefaultAppsX/ instead.
For a system-wide installation in /Library/Application Support/, run:
sudo ./PrepareSetDefaultAppsX.shThis script will create:
/Library/Application Support/SetDefaultAppsX/- Main support directory/Library/Application Support/SetDefaultAppsX/logs/- Log files directory/Library/Application Support/SetDefaultAppsX/SupportFiles/- Optional banner images
If you skip this step, the script will automatically use /Users/Shared/SetDefaultAppsX/ and create all necessary directories there without requiring sudo.
If you want to customize the dialog banner:
sudo cp your-banner-image.png "/Library/Application Support/SetDefaultAppsX/SupportFiles/SD_BannerImage.png"Alternatively, if not detected, both will be automatically downloaded and installed if not present
Once the preparation is complete, any user can run the script without sudo:
./SetDefaultAppsX.shAfter running PrepareSetDefaultAppsX.sh, the following structure will exist:
/Library/Application Support/SetDefaultAppsX/
├── logs/
│ └── SetDefaultAppsX.log
└── SupportFiles/
└── SD_BannerImage.png (optional)
If the preparation script is not run, the script will automatically create:
/Users/Shared/SetDefaultAppsX/
├── logs/
│ └── SetDefaultAppsX.log
└── SupportFiles/
└── SD_BannerImage.png (optional)
If you prefer to manually create the directories instead of using the preparation script:
# Create directories
sudo mkdir -p "/Library/Application Support/SetDefaultAppsX/logs"
sudo mkdir -p "/Library/Application Support/SetDefaultAppsX/SupportFiles"
# Set permissions
sudo chmod 755 "/Library/Application Support/SetDefaultAppsX"
sudo chmod 777 "/Library/Application Support/SetDefaultAppsX/logs"
sudo chmod 755 "/Library/Application Support/SetDefaultAppsX/SupportFiles"For enterprise deployments, you can use a managed preferences plist to customize settings:
Location: /Library/Managed Preferences/com.setdefaultappsx.defaults.plist
Keys:
SupportFiles- Path to support files directoryBannerImage- Filename of banner imageBannerPadding- Number of spaces for banner text padding
Example:
<?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>SupportFiles</key>
<string>/Library/Application Support/SetDefaultAppsX/SupportFiles/</string>
<key>BannerImage</key>
<string>SD_BannerImage.png</string>
<key>BannerPadding</key>
<integer>5</integer>
</dict>
</plist>This is normal if you haven't run the preparation script. The script will automatically fall back to /Users/Shared/SetDefaultAppsX/ and create all necessary directories there.
If you want to use the system-wide location instead, run:
sudo ./PrepareSetDefaultAppsX.shThis should not happen with the automatic fallback to /Users/Shared. If it does, check that /Users/Shared exists and is writable:
ls -ld /Users/SharedThe script will automatically download and install utiluti from GitHub. Ensure you have internet connectivity.
The script will automatically download and install swiftDialog from GitHub. Ensure you have internet connectivity.
| File | Purpose |
|---|---|
PrepareSetDefaultAppsX.sh |
One-time setup script (run with sudo) |
SetDefaultAppsX.sh |
Main script for setting default apps (run as user) |
SETUP.md |
This documentation file |
-
2.1 (2025-12-16)
- Automatically install utiluti
- Check for both binaries needed and install if necessary
-
2.0 (2025-12-15)
- Removed JAMF dependencies
- Added standalone swiftDialog installer
- Fixed Apple Silicon CPU detection
- Replaced GiantEagle references with SetDefaultAppsX
- Removed sudo from main script
- Added preparation script for directory setup
-
1.0 (2025-12-11)
- Initial version by Scott Kendall
For issues or questions:
- utiluti: https://github.com/scriptingosx/utiluti
- swiftDialog: https://github.com/bartreardon/swiftDialog