Repository navigation
Add native-style Liquid Glass OSD HUD for macOS 26 and 27 - #1931
Open
tusharxclaude wants to merge 9 commits into
Open
tusharxclaude wants to merge 9 commits into
tusharxclaude wants to merge 9 commits into
Conversation
tusharxclaude
force-pushed
the
feat/macos27-liquid-glass-osd
branch
from
October 26, 2026 12:37
39278cf to
de96437
Compare
tusharxclaude
force-pushed
the
feat/macos27-liquid-glass-osd
branch
from
October 26, 2026 13:11
de96437 to
a4e60d5
Compare
…ubble Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e HUD outline Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
In macOS 26/27 (Tahoe+), the private
OSDUIHelperXPC service no longer displays the legacy chiclet HUD whenOSDManager.sharedManager().showImage(...)is called. As a result, adjusting brightness, contrast, or volume on external displays via MonitorControl produces no on-screen feedback.This PR introduces a native macOS 26+ Liquid Glass On-Screen Display HUD (
MacOS27OSDHudController,OSDHudPanel,MacOS27OSDHudView) inOSDUtils.swiftwhile preserving the legacyOSDManagerpath for macOS 15 and earlier.What's Changed
NSGlassEffectViewBanner Pill (292 × 63 pt,cornerRadius = 19.5):_variant = 9/notificationCentermaterial at63 ptheight) so the backdrop preserves wallpaper color saturation and renders the native luminous specular rim.Display.getFriendlyName()), a pill badge (56%,56% • 280 nitswhen nits calibration is available, orLocked), min/max SF Symbols (sun.min.fill/sun.max.fill,speaker.fill/speaker.wave.3.fill,circle.lefthalf.filled/circle.righthalf.filled), a continuous progress bar, and 16 chiclet tick dots.NSPanel:hasKeyAppearance,_hasActiveAppearance, and_hasActiveControlson the borderless.nonactivatingPanelwithhasShadow = falsesoNSGlassEffectViewrenders its luminous specular glass border without stealing focus from the active app or drawing a dark rectangular window shadow.CABackdropLayer(tracksLuma = true) with hysteresis (0.45/0.53) to sample the real-time luminance behind the HUD pill and automatically flip the glass appearance and foreground colors (.darkAquavs..aqua), preventing dark-on-dark or white-on-white text regardless of the system Light/Dark mode setting.NSWorkspace.shared.accessibilityDisplayShouldReduceMotionto skip fade animations when Reduce Motion is enabled..levelIndicatoraccessibility role, display title label, and percentage/nits value on the track bar for VoiceOver.DisplayManager.resolveEffectiveDisplayID(_:)and routes OSD calls through the effective display ID so virtual/software-dimmed displays resolve to their physical screen.Screenshots
luma = 0.27 → .darkAqua)luma = 0.78 → .aqua)luma = 0.12 → .darkAqua)luma = 0.95 → .aqua)