Configuration Files in vorssaint-utils: A Complete Guide to .plist and Entitlements Setup
Vorssaint-utils stores its configuration in three static property-list files located in the Resources/ directory: Info.plist, com.vorssaint.utils.fan-control.plist, and Vorssaint.entitlements.
The vorssaint-utils repository is a macOS utility bundle that relies on standard Apple configuration formats for bundle metadata, daemon management, and code-signing permissions. Understanding these configuration files is essential for developers who need to modify, extend, or troubleshoot the application.
Info.plist: The Core Bundle Configuration
The Resources/Info.plist file serves as the primary bundle descriptor for macOS. It defines everything the operating system needs to identify and launch the application correctly.
According to the vorssaint-utils source code, this file contains:
- Bundle identifier (
CFBundleIdentifier): The unique reverse-domain identifier - Version strings (
CFBundleShortVersionString,CFBundleVersion): For update and compatibility checks - Supported platforms and minimum OS requirements
- Localization list: Available language bundles
- Required permissions: Declared capabilities for system features
Reading Info.plist at Runtime
if let info = Bundle.main.infoDictionary {
let version = info["CFBundleShortVersionString"] as? String ?? "-"
let identifier = info["CFBundleIdentifier"] as? String ?? "-"
print("Vorssaint version \(version) – bundle \(identifier)")
}
This standard Swift pattern accesses the plist through Bundle.main.infoDictionary, which automatically loads the merged configuration from the app bundle.
Fan-Control Daemon Configuration
The Resources/com.vorssaint.utils.fan-control.plist file configures an optional launch daemon for hardware fan control. This is a separate property list that follows Apple's launchd format.
Key properties in this configuration include:
| Property | Purpose |
|---|---|
Label |
Unique identifier for the daemon (com.vorssaint.utils.fan-control) |
ProgramArguments |
Path to the executable binary |
KeepAlive |
Restart policy for the daemon |
ThrottleInterval |
Minimum seconds between restarts (5 seconds in the source) |
Loading and Parsing the Fan-Control Plist
import Foundation
let fanPlistURL = Bundle.main.url(forResource: "com.vorssaint.utils.fan-control", withExtension: "plist")!
let data = try Data(contentsOf: fanPlistURL)
let plist = try PropertyListSerialization.propertyList(from: data, options: [], format: nil) as! [String: Any]
print("Daemon label:", plist["Label"] as! String) // com.vorssaint.utils.fan-control
print("Throttle interval:", plist["ThrottleInterval"] as! Int) // 5 seconds
This configuration file is not loaded automatically—the application or an installer must copy it to /Library/LaunchDaemons/ and register it with launchctl to activate the fan-control feature.
Vorssaint.entitlements: Code-Signing Permissions
The Resources/Vorssaint.entitlements file contains code-signing entitlements that grant the application privileged access to macOS protected APIs. These declarations are enforced by the operating system's security framework and must match the capabilities requested during app notarization.
Based on the vorssaint-utils source, this entitlements file includes permissions for:
com.apple.security.device.audio-input— Microphone accesscom.apple.security.files.user-selected.read-write— File system access for user-selected locations
Runtime Entitlement Verification
macOS 10.15 and later allow applications to verify their own entitlements programmatically:
import Security
func hasEntitlement(_ key: String) -> Bool {
var value: CFTypeRef?
let status = SecTaskCopyValueForEntitlement(
SecTaskCreateFromSelf(nil)!, key as CFString, &value)
return status == errSecSuccess && (value as? Bool ?? false)
}
let canAccessMicrophone = hasEntitlement("com.apple.security.device.audio-input")
print("Microphone entitlement present:", canAccessMicrophone)
The SecTaskCreateFromSelf and SecTaskCopyValueForEntitlement functions from the Security framework provide runtime introspection of the code signature.
Configuration File Locations and Build Integration
All three configuration files reside in the Resources/ directory at the repository root. During the build process, Xcode or another build tool copies these into the final .app bundle structure:
Vorssaint.app/
├── Contents/
│ ├── Info.plist ← Copied from Resources/Info.plist
│ ├── Resources/
│ │ ├── com.vorssaint.utils.fan-control.plist
│ │ └── Vorssaint.entitlements
│ └── MacOS/
│ └── Vorssaint ← Main executable
The entitlements file is referenced during the code-signing phase rather than being bundled, while the two .plist files are embedded resources accessible at runtime.
Summary
- Info.plist (
Resources/Info.plist): Bundle metadata, versioning, and OS compatibility declarations - Fan-control plist (
Resources/com.vorssaint.utils.fan-control.plist): Launch daemon configuration for the optional hardware control feature - Entitlements (
Resources/Vorssaint.entitlements): Code-signing permissions for privileged macOS APIs
These are the only static configuration files in the vorssaint-utils repository. Runtime state—including user preferences and caches—is stored separately in the user's ~/Library folders and managed programmatically.
Frequently Asked Questions
How do I modify vorssaint-utils configuration files for development?
Edit the source files in Resources/ directly, then rebuild the application. Changes to Info.plist require a full rebuild to propagate into the bundle. For entitlements changes, you must re-sign the application with codesign --entitlements Resources/Vorssaint.entitlements for testing.
Why does vorssaint-utils use .plist format instead of JSON or YAML?
Apple's property-list format is the native standard for macOS bundle configuration. The operating system provides PropertyListSerialization and Bundle APIs that read .plist files automatically. JSON support was added to plists in macOS 10.13, but binary and XML plists remain the conventional choice for App Store distribution.
What happens if the fan-control plist is missing from the installed app?
The fan-control feature becomes unavailable, but the main application continues to function. The daemon configuration is optional—vorssaint-utils operates normally without it, simply disabling hardware fan management. The application does not crash or produce errors; it silently skips daemon registration attempts when the file is absent.
Where does vorssaint-utils store user preferences if not in these plist files?
Runtime user preferences are stored in ~/Library/Preferences/ using NSUserDefaults (now UserDefaults in Swift), which writes to a separate domain-specific plist managed by the system. These are generated dynamically and excluded from version control, unlike the static configuration files in Resources/.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →