Can the Apple menu be moved to the right a substantial amount (screen failure)?

My macbook pro fell and the left side of the screen is now black. So about 20% of it is not visible due to breakage. I am working around this using an external display when I can locate one, but on the go I'd like to limp along until I can afford the repair. Is there a software solution for MacBook Pro (Retina, 15-inch, Mid 2014) Running macOS Sierra version 10.12 to adjust the screen resolution or placement to squeeze it without messing up proportions to the left so that it covers only the part that's not broken.

Is there a way to manually adjust resolution through underscan/overscan (which is not visible to me for my own display) or through other means?

I'm trying to push everything to the side so that it's visible (including the apple logo menu on the top left)

Picture of MacBook with issue

I tried downloading DisableMonitor but it only sticks with proportions and doesn't allow me to push the content to the right. All the resolution switches assume the whole screen is working - I need to shift the content over and not otherwise change the scale of the remaining screen.

Basically, can the window manager itself run in split screen mode with nothing critical shown in the left side split?


Solution 1:

Try to use RDM to set whatever you like, and its free/oss, so id recommend that. Also you can take a look at QuickRes which can (probably) do the same but it's not free. There is also SwitchResX you can try if it has anything you might need.

Update: I found also this one here called resolutionator and there is a brew util I totally forgot about in cask cscreen, you can try to install it with brew brew cask install cscreen and then, for example:

cscreen -d 32 -x 1420 -y 1080 -s b42e7f0 -r 59 -f

You can also try this gist: https://gist.github.com/ejdyksen/8302862 After thinking about your issue seems to be in EDID. Also, what's your GPU in the MBP and what happens if you toggle the overscan option in pref's?

I forgot that to apply this patch you need to disable Apple's System Integrity Protection with csrutil disable from Rescue mode and then into macOS again and (re)apply the script from gist by running it with ruby: cd ~/Downloads; sudo ruby patch-edid.rb (assuming Downloads is the folder where you saved it), then reboot again.

To reenable System Integrity Protection you need to csrutil enable from terminal in Rescue mode and reboot, then check csrutil status if it's working again.

Soo.. the way I would try to solve your issue would be:

  1. check the custom resolutions options in one of the apps above,
  2. set a custom resolution which does not include your damaged part of the screen
  3. enforce that custom resolution.
  4. if the enforcement is not doable through custom system prefs: inject custom EDID through clover during boot.
  5. making sure that this solution is persistent after reboot

Update 07/01/2017

After some basic digging, there are native settings in macOS defaults .plist files that describe screen properties. I haven't tested it yet, but there are some interesting settings describing screens, snippet:

UnmirroredOriginX = 1920; UnmirroredOriginY = 0; UnmirroredResolution = 1; UnmirroredWidth = 1920; Width = 1920;

By editing those you can set new system defaults without too much system hacking and (maybe) macOS should apply those on logout/reboot

Remember, you have to disable SIP (see above), otherwise macOS wont' let you write changes even when using sudo

Get the Window Server defaults plist (property list)

sudo defaults read /Library/Preferences/com.apple.windowserver.plist After this, defaults will list see something like this:

{ DisplayAnyUserSets = ( ( { Active = 1; Depth = 4; DisplayID = XXX; DisplayProductID = XXX; DisplaySerialNumber = XXX; DisplayVendorID = XXX; ForceDeepMode = 0; Height = 1080; IOFlags = 34603015; LimitsHeight = 1080; LimitsOriginX = 0; LimitsOriginY = 0; LimitsWidth = 1920; MirrorID = 0; Mirrored = 0; Mode = { BitsPerPixel = 32; BitsPerSample = 8; DepthFormat = 4; Height = 1080; IODisplayModeID = "-2147459072"; IOFlags = 34603015; Mode = 0; PixelEncoding = "--------RRRRRRRRGGGGGGGGBBBBBBBB"; RefreshRate = 60; SamplesPerPixel = 3; UsableForDesktopGUI = 1; .....

Reading is possible without sudo although i'm not sure how (and if) user/admin NS differs, but the list starts with DisplayAnyUserSets. For consistency use sudo for read/write operations.

To modify a single node:

sudo defaults write /Library/Preferences/com.apple.windowserver.plist dot.path.PropertyName -int XXXX

-int is the type, can be float, bool, int or ... [see docs]. XXXX is a number (integer in this case).

Its basically a XML doc describing properties, before changing though - make sure to backup it, those are not User defaults but System wide defaults. Read documentation for details- man defaults.

Edit a single node, logout, see if something changes, if not- reboot. Still nothing? Edit 3 nodes, logout/reboot again and hopefully see a change. Try editing the Orgin/Width/Height notes accordingly to skip the damaged area.

Also, add an extra Admin account in case stuff goes wrong so you can login with different default set of defaults (nice wording heh, o.O)