[PR #1927] UI: Explore optional Liquid Glass volume feedback on macOS 26 #1337

Open
opened 2026-10-23 22:02:35 -06:00 by gitea-mirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/MonitorControl/MonitorControl/pull/1927
Author: @prudhvi1709
Created: 10/15/2026
Status: 🔄 Open

Base: main ← Head: ui/modern-volume-osd-prototype


📝 Commits (2)

  • faef136 UI: Explore optional Liquid Glass volume feedback on macOS 26
  • 4237c5b FIX: Refresh volume indicator colors when appearance changes

📊 Changes

7 files changed (+350 additions, -0 deletions)

View changed files

📝 MonitorControl.xcodeproj/project.pbxproj (+4 -0)
📝 MonitorControl/Enums/PrefKey.swift (+3 -0)
📝 MonitorControl/Support/AppDelegate.swift (+3 -0)
➕ MonitorControl/Support/ModernVolumeOSD.swift (+135 -0)
📝 MonitorControl/Support/OSDUtils.swift (+6 -0)
➕ Prototype/README.md (+64 -0)
➕ Prototype/main.swift (+135 -0)

📄 Description

MonitorControl uses the classic volume indicator on macOS Tahoe. This prototype adds an optional Liquid Glass indicator for external-display volume and mute feedback, while keeping the classic indicator as the default.

This is a draft to discuss the approach, not a replacement ready to merge. The new indicator is drawn by the app using public AppKit APIs; it is not Apple's native Tahoe volume indicator. Keyboard volume and mute worked during testing, but the custom capsule was not the preferred visual result and its timing still needs review. The original app was restored after the experiment.

The change is limited to volume feedback. It leaves DDC and audio control unchanged, uses a nonactivating panel for each target display, and cleans up after fading out. It also avoids animation when Reduce Motion is enabled. Brightness, contrast, locked and unavailable states continue to use the existing indicator. The experimental modernVolumeOSD preference is off by default; there is no settings UI yet.

Validation:

  • Full Debug build passed with Xcode 26.5 and the pinned dependencies.
  • Volume up/down and mute were tested with a Dell S2725QC using a separate development bundle and preferences domain.
  • Standalone normalization and window lifecycle checks passed.
  • Targeted Intel macOS 10.14 type-check passed; older-system execution has not been tested.

The main maintenance question is whether requiring the macOS 26 SDK is acceptable for an optional feature. Before this could be ready, it would also need agreement on appearance and placement, a localized preference, project lint/format checks, and testing for accessibility, light appearance, fullscreen Spaces, hotplug, multiple displays and duplicate system feedback.

Related: https://github.com/MonitorControl/MonitorControl/discussions/1873


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/MonitorControl/MonitorControl/pull/1927 **Author:** [@prudhvi1709](https://github.com/prudhvi1709) **Created:** 10/15/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `ui/modern-volume-osd-prototype` --- ### 📝 Commits (2) - [`faef136`](https://github.com/MonitorControl/MonitorControl/commit/faef136d4112aa012ce999a24733650d9b206ee6) UI: Explore optional Liquid Glass volume feedback on macOS 26 - [`4237c5b`](https://github.com/MonitorControl/MonitorControl/commit/4237c5bef7677daaf6d549f2583303d3ca667399) FIX: Refresh volume indicator colors when appearance changes ### 📊 Changes **7 files changed** (+350 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `MonitorControl.xcodeproj/project.pbxproj` (+4 -0) 📝 `MonitorControl/Enums/PrefKey.swift` (+3 -0) 📝 `MonitorControl/Support/AppDelegate.swift` (+3 -0) ➕ `MonitorControl/Support/ModernVolumeOSD.swift` (+135 -0) 📝 `MonitorControl/Support/OSDUtils.swift` (+6 -0) ➕ `Prototype/README.md` (+64 -0) ➕ `Prototype/main.swift` (+135 -0) </details> ### 📄 Description MonitorControl uses the classic volume indicator on macOS Tahoe. This prototype adds an optional Liquid Glass indicator for external-display volume and mute feedback, while keeping the classic indicator as the default. This is a draft to discuss the approach, not a replacement ready to merge. The new indicator is drawn by the app using public AppKit APIs; it is not Apple's native Tahoe volume indicator. Keyboard volume and mute worked during testing, but the custom capsule was not the preferred visual result and its timing still needs review. The original app was restored after the experiment. The change is limited to volume feedback. It leaves DDC and audio control unchanged, uses a nonactivating panel for each target display, and cleans up after fading out. It also avoids animation when Reduce Motion is enabled. Brightness, contrast, locked and unavailable states continue to use the existing indicator. The experimental modernVolumeOSD preference is off by default; there is no settings UI yet. Validation: - Full Debug build passed with Xcode 26.5 and the pinned dependencies. - Volume up/down and mute were tested with a Dell S2725QC using a separate development bundle and preferences domain. - Standalone normalization and window lifecycle checks passed. - Targeted Intel macOS 10.14 type-check passed; older-system execution has not been tested. The main maintenance question is whether requiring the macOS 26 SDK is acceptable for an optional feature. Before this could be ready, it would also need agreement on appearance and placement, a localized preference, project lint/format checks, and testing for accessibility, light appearance, fullscreen Spaces, hotplug, multiple displays and duplicate system feedback. Related: https://github.com/MonitorControl/MonitorControl/discussions/1873 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
github-starred/MonitorControl#1337
No description provided.