SkyLight

Private frameworks are frameworks which Apple does not intend for third-parties to use. Private frameworks are not officially documented or supported, and can be more unstable than public frameworks between firmware updates, but many of the interesting features of Apple platforms are in the private frameworks. They are very likely to change between releases, even minor ones, so make sure you check which version of iOS, macOS, etc. your code is running on before using private API.

Attempting to use private frameworks in an App Store app will result in rejection of that application.

SkyLight has no headers, so there is no "API" here in the usual sense — only the symbol names Apple's linker stub publishes, plus what can be observed by calling them. Entries that were actually called on a real machine are marked probed; the rest are listed with whatever the symbol table says and nothing more. Signatures shown are inferred, and a wrong guess is a crash rather than a compile error.

Prefer dlopen/dlsym over linking. If you link against SkyLight directly and Apple removes a symbol, your process fails to launch; with dlsym you get a nil you can handle. Most calls take a connection id from SLSMainConnectionID as their first argument.

Many of these calls have a second, older name: 778 of them are also exported by the public CoreGraphics framework under the CGS prefix (SLSGetMenuBarAutohideEnabled is CGSGetMenuBarAutohideEnabled). Existing code and most community documentation use the CGS names, so both are shown.

Two probe programs live in the repository:

  • tools/probe_skylight.swift — read-only. It only queries state, so it runs on the maintainer's machine, and it is what the probed markers above are based on.
  • tools/probe_skylight_rw.swift — read/write/restore. Each check reads a setting, changes it, verifies the change, puts the original back and verifies the restore. It never runs on the maintainer's machine: it requires SKYLIGHT_RW_PROBES=1, a --yes flag, and it refuses outright when it recognises that machine by a hash of its hardware UUID. Run it on a spare Mac with SKYLIGHT_RW_PROBES=1 xcrun swift tools/probe_skylight_rw.swift --yes, and expect the menu bar to blink while it works.

Topics

Menu bar88 · The menu bar as the window server sees it: which display owns it, autohide and reveal state, its drawing style and appearance, and the per-space visibility overrides.
Session, login & lock81 · Login sessions, console ownership (fast user switching), the lock screen and the shielding windows that cover the display while locked, plus secure input.
Spaces & Mission Control185 · Spaces (virtual desktops): enumerating them per display, moving windows between them, the current space, and the Mission Control / Exposé transitions.
Windows564 · Window creation, ordering and levels, backing surfaces, shadows, shapes and regions, and the tracking areas that drive mouse-enter/exit.
Displays & screens470 · Display configuration: modes and resolutions, mirroring, brightness and gamma, fade effects, and capture of whole displays.
Events & input373 · The event stream: taps and event routing, keyboard and symbolic hot keys, mouse and cursor state, scrolling, gestures, tablet and touch input, and drag regions.
Processes & activation49 · The SLPS family: process serial numbers, which process is frontmost, activation and hide/show requests, and typing focus. The window server's side of application activation.
Accessibility & zoom39 · Screen zoom and magnification, colour inversion and contrast, and the user adjustment matrix used by the accessibility display settings.
Appearance & effects31 · System appearance and themes, colour palettes and profiles, and the Core Image filters the window server applies to windows and displays.
Capture & screenshots25 · Screen capture: screenshots, content streams and filters (the plumbing under ScreenCaptureKit), and screen recording state.
Transactions & animation45 · Window-server transactions, which batch changes so they take effect atomically, plus animations, transitions and display freezes.
Connections & notifications57 · Connections to the window server (every client has one) and the notification/callback registrations that report window, space and display changes.
Rendering & layers31 · Layer contexts, Metal and OpenGL device plumbing, and the surface/texture glue between clients and the compositor.
Pixel access & images18 · The SLPixelAccess family: locking a window or display's pixels and reading them as bitmap data.
Tiling & snapping15 · Window tiling and snapping: the zones, targets and per-window opt-outs behind macOS window tiling.
Window server & configuration19 · The client's relationship with the window server itself: connecting and initialising, saving and deferring configuration, and querying server state and version.
Debug & diagnostics15 · Debugging and instrumentation hooks: window-server logging, traces, performance counters and state dumps.
Power & assertions1 · Display sleep and idle handling, and the assertions that keep the display awake.
Privacy indicators (Swift)192 · The only part of SkyLight exported as Swift rather than C: the privacy indicator types behind the camera and microphone dots in the menu bar. Signatures here are demangled from the binary, so they are exact rather than inferred.
Dock & system UI6 · The Dock's reserved rectangle, desktop and wallpaper windows, widgets, and the privacy indicators (the camera/microphone dots), which are the framework's only Swift-exported API.
Other1 · Symbols no topic rule matched yet.
Objective-C classes137 · classes exported by the framework

Where this comes from

install name/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
SDK stubSystem/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight.tbd — the authoritative symbol list
binaryread from the dyld shared cache (arm64e); function/data kinds come from its function-starts table
versioncurrent 600, compatibility 64
symbols2305 exported — 1876 functions, 421 data/constants, 137 Objective-C classes, 192 Swift
legacy names778 of these are also exported by CoreGraphics under the CGS prefix — the names most existing code uses
built2026-09-25 on macOS 26.4.1, SDK 26.4