[PR #1879] feat: Add option to ignore built-in display in combined slider mode #1322

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

📋 Pull Request Information

Original PR: https://github.com/MonitorControl/MonitorControl/pull/1879
Author: @jonaaix
Created: 7/23/2026
Status: 🔄 Open

Base: main ← Head: feature/combined-slider-ignore-builtin


📝 Commits (1)

  • ccd2755 feat: add option to ignore built-in display in combined slider mode

📊 Changes

24 files changed (+112 additions, -4 deletions)

View changed files

📝 MonitorControl/Enums/PrefKey.swift (+3 -0)
📝 MonitorControl/Support/DisplayManager.swift (+9 -1)
📝 MonitorControl/Support/MenuHandler.swift (+7 -0)
📝 MonitorControl/UI/Base.lproj/Main.storyboard (+19 -3)
📝 MonitorControl/UI/cs.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/de.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/en.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/es.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/fr.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/hi.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/hu.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/it.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/ja.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/ko.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/nl.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/pl.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/pt-BR.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/pt-PT.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/ru.lproj/Main.strings (+3 -0)
📝 MonitorControl/UI/sk.lproj/Main.strings (+3 -0)

...and 4 more files

📄 Description

Add option to ignore built-in display in combined slider mode

Summary

When "Use combined slider for all displays" is enabled, the combined slider also controls the built-in MacBook display. Since the built-in display gets significantly brighter than typical external monitors at the same relative setting, it always stands out — making the combined slider practically unusable in everyday use.

This PR adds a new "Ignore built-in display" checkbox, shown only when combined slider mode is selected. When enabled, the built-in display is excluded from combined control.

What changed

  • New checkbox in Settings → App menu → Multiple displays, visible only when "Use combined slider for all displays" is selected (same show/hide behavior as the existing hint text below the popup)
  • Menu slider: the built-in display is no longer added to the combined slider handler, so the slider only controls external displays
  • Keyboard control: when "All screens" is selected for keyboard brightness, the built-in display is filtered out of the affected displays as well (both media keys and custom shortcuts go through getAffectedDisplays, so both paths are covered with a single change)
  • The built-in display's brightness remains fully controllable via Control Center / System Settings

Implementation notes

  • New preference key combineExcludeBuiltin (defaults to off — no behavior change for existing users)
  • The condition (combined mode + option enabled) is encapsulated in DisplayManager.isBuiltinExcludedFromCombinedSlider() and used by both MenuHandler and DisplayManager.getAffectedDisplays()
  • Localizations added for all 20 languages (following the pattern of #1817)

Screenshots

image

How to test

  1. Settings → App menu → Multiple displays → select "Use combined slider for all displays"
  2. Enable the new "Ignore built-in display" checkbox
  3. Move the combined brightness slider in the menu → only external displays change, built-in display stays
  4. Press brightness keys (with keyboard brightness set to "All screens") → again only external displays change
  5. Disable the checkbox → built-in display is controlled together with all displays again

🔄 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/1879 **Author:** [@jonaaix](https://github.com/jonaaix) **Created:** 7/23/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feature/combined-slider-ignore-builtin` --- ### 📝 Commits (1) - [`ccd2755`](https://github.com/MonitorControl/MonitorControl/commit/ccd27550d7cc817fb217258b2d1ddcaa0c0fbc80) feat: add option to ignore built-in display in combined slider mode ### 📊 Changes **24 files changed** (+112 additions, -4 deletions) <details> <summary>View changed files</summary> 📝 `MonitorControl/Enums/PrefKey.swift` (+3 -0) 📝 `MonitorControl/Support/DisplayManager.swift` (+9 -1) 📝 `MonitorControl/Support/MenuHandler.swift` (+7 -0) 📝 `MonitorControl/UI/Base.lproj/Main.storyboard` (+19 -3) 📝 `MonitorControl/UI/cs.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/de.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/en.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/es.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/fr.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/hi.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/hu.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/it.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/ja.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/ko.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/nl.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/pl.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/pt-BR.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/pt-PT.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/ru.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/UI/sk.lproj/Main.strings` (+3 -0) _...and 4 more files_ </details> ### 📄 Description # Add option to ignore built-in display in combined slider mode ## Summary When **"Use combined slider for all displays"** is enabled, the combined slider also controls the built-in MacBook display. Since the built-in display gets **significantly brighter** than typical external monitors at the same relative setting, it always stands out — making the combined slider practically unusable in everyday use. This PR adds a new **"Ignore built-in display"** checkbox, shown only when combined slider mode is selected. When enabled, the built-in display is excluded from combined control. ## What changed - **New checkbox** in *Settings → App menu → Multiple displays*, visible only when *"Use combined slider for all displays"* is selected (same show/hide behavior as the existing hint text below the popup) - **Menu slider**: the built-in display is no longer added to the combined slider handler, so the slider only controls external displays - **Keyboard control**: when *"All screens"* is selected for keyboard brightness, the built-in display is filtered out of the affected displays as well (both media keys and custom shortcuts go through `getAffectedDisplays`, so both paths are covered with a single change) - The built-in display's brightness remains fully controllable via Control Center / System Settings ## Implementation notes - New preference key `combineExcludeBuiltin` (defaults to off — no behavior change for existing users) - The condition (combined mode + option enabled) is encapsulated in `DisplayManager.isBuiltinExcludedFromCombinedSlider()` and used by both `MenuHandler` and `DisplayManager.getAffectedDisplays()` - Localizations added for all 20 languages (following the pattern of #1817) ## Screenshots <img width="603" height="108" alt="image" src="https://github.com/user-attachments/assets/287943f1-54bf-46f2-bbc9-b07d67c99ad7" /> ## How to test 1. Settings → App menu → Multiple displays → select *"Use combined slider for all displays"* 2. Enable the new *"Ignore built-in display"* checkbox 3. Move the combined brightness slider in the menu → only external displays change, built-in display stays 4. Press brightness keys (with keyboard brightness set to *"All screens"*) → again only external displays change 5. Disable the checkbox → built-in display is controlled together with all displays again --- <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#1322
No description provided.