DropletPermission
Capability strings a .droplet declares under DroppyPermissions in its Info.plist.
struct DropletPermission
Each value maps to a host facade, a TCC intent, or both. Review enforces the list: at runtime the host hands a droplet only the services its manifest declares, and review diffs declared capabilities against the symbols the bundle actually links. Honest caveat: in-process code can technically bypass Swift-level gating; the enforcement value is review plus store policy, not a sandbox. That is exactly why the store is review-and-sign rather than open sideloading.
Open by design
This is an open RawRepresentable struct rather than a closed enum, the same idiom as DropletID, ShelfWidgetID and ExpandedSurfaceID. Two reasons, and both are about time:
- A bundle built against a newer SDK may declare a capability string this build has never heard of. An open type represents that string exactly rather than losing it, and the host treats anything it does not recognise as not granted. Before 0.3.0 the closed enum needed a separate
DropletBundleInfo.unknownPermissionsarray to carry the leftovers. - Droplets compile DroppyKit as a non-resilient dependency, so a closed enum makes a missing
switchcase a compile error rather than an@unknown defaultwarning. Adding a capability in 1.1 would have broken every droplet that switched on one.
Because the type is open, known is the list this SDK build understands and is explicitly not exhaustive at runtime. Always write a default: when you switch.
Initializers
init(_:)
init(_ rawValue: String)
Creates a capability from a raw string.
init(from:)
init(from decoder: Decoder) throws
init(rawValue:)
init(rawValue: String)
Creates a capability from a raw string.
init(stringLiteral:)
init(stringLiteral value: String)
String-literal convenience, so ["hud", "media-read"] reads naturally.
Type properties
accessibility
static let accessibility: DropletPermission
Use the Accessibility (AX) APIs.
appleEvents
static let appleEvents: DropletPermission
Send Apple events / AppleScript.
calendars
static let calendars: DropletPermission
Read and write calendars.
camera
static let camera: DropletPermission
Use the camera.
catalogActivate
static let catalogActivate: DropletPermission
Bring another droplet's surface forward.
catalogCommands
static let catalogCommands: DropletPermission
List and invoke commands explicitly published by other products.
catalogRead
static let catalogRead: DropletPermission
List the droplets and shelf widgets this host knows about.
clipboardRead
static let clipboardRead: DropletPermission
Read the host's clipboard history as value snapshots.
clipboardWrite
static let clipboardWrite: DropletPermission
Paste, rename, tag, pin, favorite and delete clipboard history entries.
contacts
static let contacts: DropletPermission
Read contacts.
documentSessions
static let documentSessions: DropletPermission
Read and edit a host-owned scoped document session.
downloads
static let downloads: DropletPermission
Download and install auxiliary artifacts.
entitlementsRead
static let entitlementsRead: DropletPermission
Read whether a gated host feature is active.
expandedSurface
static let expandedSurface: DropletPermission
Take the expanded notch shelf over with droplet-supplied content.
fullDiskAccessProbe
static let fullDiskAccessProbe: DropletPermission
Probe for Full Disk Access without requesting it.
globalShortcuts
static let globalShortcuts: DropletPermission
Register global keyboard shortcuts.
hostInteractionSuppression
static let hostInteractionSuppression: DropletPermission
Temporarily suppress one host interaction route with a revocable token.
hud
static let hud: DropletPermission
Present transient HUDs.
known
static let known: [DropletPermission]
Every capability this SDK build knows.
Not exhaustive at runtime. A bundle built against a newer SDK may declare a string that is not in here, and that is a supported state: the host treats it as not granted and the droplet still loads. Use this to render a capability list or to split declared strings into known and unknown; never to validate a manifest closed.
lockScreen
static let lockScreen: DropletPermission
Publish lock screen status entries.
mediaRead
static let mediaRead: DropletPermission
Read now-playing state.
mediaTransport
static let mediaTransport: DropletPermission
Drive media transport.
menuBar
static let menuBar: DropletPermission
Contribute a menu bar extra.
microphone
static let microphone: DropletPermission
Record from the microphone.
networkClient
static let networkClient: DropletPermission
Make outbound network connections.
networkServer
static let networkServer: DropletPermission
Listen for inbound network connections.
notchBanner
static let notchBanner: DropletPermission
Present banners on the host's notification surface.
notchSurface
static let notchSurface: DropletPermission
Present expanded surfaces in the notch area.
reminders
static let reminders: DropletPermission
Read and write reminders.
screenCapture
static let screenCapture: DropletPermission
Capture the screen.
shelfRead
static let shelfRead: DropletPermission
Read shelf items.
shelfSurface
static let shelfSurface: DropletPermission
Drive the shelf window: keyboard focus, sizing, growth, drag handoff.
shelfWrite
static let shelfWrite: DropletPermission
Add items to the shelf.
soundPlayback
static let soundPlayback: DropletPermission
Play a semantic host-owned audible cue.
Properties
description
var description: String { get }
isKnown
var isKnown: Bool { get }
Whether known contains this capability, meaning this SDK build understands it.
rawValue
let rawValue: String
The raw capability string, as it appears in DroppyPermissions.
Methods
encode(to:)
func encode(to encoder: Encoder) throws