MacOS – Phantom Displays on Startup

displaymacbook promacos

I have been experiencing a problem with my Macbook Pro (2015 late with the Intel HD Graphics 6100) where the computer detects 3 retina 31 inch displays upon startup. Possibly because Retina displays are nicer than the built in displays, one of these "phantom displays" automatically becomes the primary… meaning I do not see the prompt for login, and all my programs launch off-screen.

I am able to recover the mouse using an actual mouse pointer. For some reason I cannot understand using the trackpad does not work… but a mouse will…

Eventually I can change the primary screen and disable the monitors using some kludge code, but… it happens on every startup and the retina monitors my system believes exist are hogging resources to the point of lowering framerates to unusable whenever I hook up my modest external displays (19.5 at work or 24 inch at home).

I've reset the SMC and PRAM… I've futzed with configurations available in the GUI (I think… although perhaps I missed something)… how do I deal with this?

If anybody can direct me to a means of shifting the primary display with hotkeys that would be a great first step so I can work on a day to day without 20 minutes of set up.

If anybody has a true fix or can at least tell me how to go about dealing with this methodically, I'd very much appreciate it! I've been to the apple store 2 times for 5 hours and received nothing better than a suggestion to do a wipe and clean install. I'm a developer, and have a lot of configuring I'd need to do post wipe… and I want to to understand why this broke, so that I can avoid doing it again. And I'm curious… and I don't think that should be the solution to problems! That's a broken system if that's how you fix quirks like that. It should be MUCH easier to tell the computer it doesn't have 3 giant 30 inch displays hooked into it. The damn machine can't even drive more than 2 displays with the internal GPU/Motherboard (despite the 3 outputs).

I'm command line capable if you can direct me to the config files in etc or whatever that deal with the displays. I would love to learn how to deal with display issues in general with linux environments…

A partial fix has included the use of a tool available in this repo: https://github.com/Eun/DisableMonitor
A kludge little script owned by admin:root

#!/bin/bash

/Applications/DisableMonitor.app/Contents/MacOS/DisableMonitor --disable `/Applications/DisableMonitor.app/Contents/MacOS/DisableMonitor --list | grep Display\ \(1\) | sed 's|Display (1)||g' | sed 's| ||g'`
/Applications/DisableMonitor.app/Contents/MacOS/DisableMonitor --disable `/Applications/DisableMonitor.app/Contents/MacOS/DisableMonitor --list | grep Display\ \(2\) | sed 's|Display (2)||g' | sed 's| ||g'`
/Applications/DisableMonitor.app/Contents/MacOS/DisableMonitor --disable `/Applications/DisableMonitor.app/Contents/MacOS/DisableMonitor --list | grep Display\ \(3\) | sed 's|Display (3)||g' | sed 's| ||g'`

And another kludge plist named com.example.plist @ /Library/LaunchDaemons/

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.example.plist</string>
        <key>ProgramArguments</key>
        <array>
          <string>/usr/bin/bash</string>
          <string>/Applications/startup</string>
        <array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <false/>
        <key>SuccessfulExit</key>
        <false/>
    </dict>
</plist>

Addition, (one has to):
$sudo launchctl load -w example.plist

However I still want a clean fix. And if anybody can help me maybe tidy up this code, which I'm not incredibly sure about… it would be appreciated. It works… but only after login. It'd be nice if it launched during the login window period… so i can see my name/etc. I have tried messing with the various folders and launchctl flags… no dice yet.

Best Answer

This may not be a full fix.

In the Display setting. Click the Arrange Tab. You will see how the Screens are being arranged. There you can adjust the layout. But more importantly you can drag the menu bar icon ( white line at the top of one display) across to the screen you want as primary.

I would try that and see if you at least can get starting in at login.

I would also look at maybe deleting the display prefs.