[GH-ISSUE #907] Ability to deactivate/hide a connected display #563

Closed
opened 2026-05-05 06:15:23 -06:00 by gitea-mirror · 9 comments
Owner

Originally created by @icesof on GitHub (Jan 23, 2022).
Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/907

Before opening the issue, have you...?

  • Searched for existing issues

My external display with 2 cables, one for MacBook Pro, another for a desktop. After switching to the desktop (by the menu on display), the MacBook Pro is keeping showing something on the external display, unless plug out the cable.

Describe the solution you'd like

the possibility to disable the external display with MonitorControl? and enabling it back later..

Describe alternatives you've considered

not yet.

Anything else?

No response

Originally created by @icesof on GitHub (Jan 23, 2022). Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/907 ### Before opening the issue, have you...? - [X] Searched for existing issues ### Is your feature request related to a problem? Please describe My external display with 2 cables, one for MacBook Pro, another for a desktop. After switching to the desktop (by the menu on display), the MacBook Pro is keeping showing something on the external display, unless plug out the cable. ### Describe the solution you'd like the possibility to disable the external display with MonitorControl? and enabling it back later.. ### Describe alternatives you've considered not yet. ### Anything else? _No response_
gitea-mirror 2026-05-05 06:15:23 -06:00
Author
Owner

@waydabber commented on GitHub (Jan 24, 2022):

This can be done. One approach would be to have an option to change the external display to the mirror of the internal display (which effectively makes it disappear). An other option is to move the windows on the screen to an other display, move the screen to the end of the display list, prohibit the mouse from entering it, take the screen exclusively and fill it with a blank screen. This is a more complicated approach.

The same would be useful for a notebook - if somebody wants to use it with display opened (for example to use the touchpad or the keyboard) but does not want the screen to display anything (the internal display's brightness can be turned down to zero in this case).

<!-- gh-comment-id:1020541964 --> @waydabber commented on GitHub (Jan 24, 2022): This can be done. One approach would be to have an option to change the external display to the mirror of the internal display (which effectively makes it disappear). An other option is to move the windows on the screen to an other display, move the screen to the end of the display list, prohibit the mouse from entering it, take the screen exclusively and fill it with a blank screen. This is a more complicated approach. The same would be useful for a notebook - if somebody wants to use it with display opened (for example to use the touchpad or the keyboard) but does not want the screen to display anything (the internal display's brightness can be turned down to zero in this case).
Author
Owner

@fgoepel commented on GitHub (Feb 4, 2022):

Apparently there is an internal API to actually disable a monitor. There is an app called DisableMonitor that makes use of it:
3a69041904/DisableMonitorAppDelegate.m (L303)

In some cases there seems to be a noticeable difference in UI performance when only one monitor is active. The downside is that if you disable your internal screen and detach the other screen, the internal screen stays disabled and you have to reboot or reattach the secondary screen to see anything. Maybe that's just a flaw in the way DisableMonitor implements this, and it could be avoided by checking for display changes and re-enabling the disabled screen if it's the only one left, but it's something to watch out for.

<!-- gh-comment-id:1030256936 --> @fgoepel commented on GitHub (Feb 4, 2022): Apparently there is an internal API to actually disable a monitor. There is an app called DisableMonitor that makes use of it: https://github.com/Eun/DisableMonitor/blob/3a690419041ae78cb4d776f2cb07919356817b49/DisableMonitorAppDelegate.m#L303 In some cases there seems to be a noticeable difference in UI performance when only one monitor is active. The downside is that if you disable your internal screen and detach the other screen, the internal screen stays disabled and you have to reboot or reattach the secondary screen to see anything. Maybe that's just a flaw in the way DisableMonitor implements this, and it could be avoided by checking for display changes and re-enabling the disabled screen if it's the only one left, but it's something to watch out for.
Author
Owner

@waydabber commented on GitHub (Feb 4, 2022):

Wow. I wasn't aware of this one (an other undocumented api call). :) I'll try it for sure, it would be great to implement this one!

<!-- gh-comment-id:1030397137 --> @waydabber commented on GitHub (Feb 4, 2022): Wow. I wasn't aware of this one (an other undocumented api call). :) I'll try it for sure, it would be great to implement this one!
Author
Owner

@fgoepel commented on GitHub (Feb 5, 2022):

There seem to be quite a few undocumented APIs. I found this list/headers from a couple of years ago: https://github.com/NUIKit/CGSInternal/issues/3

<!-- gh-comment-id:1030692841 --> @fgoepel commented on GitHub (Feb 5, 2022): There seem to be quite a few undocumented APIs. I found this list/headers from a couple of years ago: https://github.com/NUIKit/CGSInternal/issues/3
Author
Owner

@waydabber commented on GitHub (Feb 5, 2022):

Yes, we've been using a host of undocumented API calls (that's why the full MonitorControl cannot go to the App Store) - was just now aware of this one. Will experiment with it if it still works on M1.

<!-- gh-comment-id:1030709933 --> @waydabber commented on GitHub (Feb 5, 2022): Yes, we've been using a host of undocumented API calls (that's why the full MonitorControl cannot go to the App Store) - was just now aware of this one. Will experiment with it if it still works on M1.
Author
Owner

@waydabber commented on GitHub (Jul 8, 2022):

https://github.com/MonitorControl/MonitorControl/issues/1105

<!-- gh-comment-id:1178677818 --> @waydabber commented on GitHub (Jul 8, 2022): https://github.com/MonitorControl/MonitorControl/issues/1105
Author
Owner

@waydabber commented on GitHub (Jan 30, 2023):

This feature is available now (for Apple Silicon macs) in the latest BetterDisplay beta: https://github.com/waydabber/BetterDisplay/releases

I do not plan to add this one to MonitorControl as it does not really fit the profile of the app, other contributors might of course create a pull request for this.

<!-- gh-comment-id:1408266571 --> @waydabber commented on GitHub (Jan 30, 2023): This feature is available now (for Apple Silicon macs) in the latest BetterDisplay beta: https://github.com/waydabber/BetterDisplay/releases I do not plan to add this one to MonitorControl as it does not really fit the profile of the app, other contributors might of course create a pull request for this.
Author
Owner

@tfbecker commented on GitHub (Jan 30, 2023):

Thank you for releasing this - Improves my morning by a lot! - I stopped searching for a solution and gave up.
Thank you!

<!-- gh-comment-id:1408366803 --> @tfbecker commented on GitHub (Jan 30, 2023): Thank you for releasing this - Improves my morning by a lot! - I stopped searching for a solution and gave up. Thank you!
Author
Owner

@waydabber commented on GitHub (Oct 18, 2023):

This feature is not planned in MonitorControl as the current feature set is considered final.

<!-- gh-comment-id:1768656042 --> @waydabber commented on GitHub (Oct 18, 2023): This feature is not planned in MonitorControl as the current feature set is considered final.
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#563
No description provided.