Take a look at our
ThinkPads.com HOME PAGE
For those who might want to contribute to the blog, start here: Editors Alley Topic
Then contact Bill with a Private Message

howto add particular custom display resolution choices (and HiDPI)

OS-X on ThinkPads
Post Reply
Message
Author
automobus
Senior Member
Senior Member
Posts: 546
Joined: Sun Jan 24, 2010 5:32 pm
Location: USA : Illinois : Chicago

howto add particular custom display resolution choices (and HiDPI)

#1 Post by automobus » Wed May 18, 2016 8:46 pm

This information gleaned from tonymacx86.com Forum (Adding/Using HiDPI custom resolutions) and MacRumors Forums (Scale 1680x1050 on rMB without an app).

Something which I always hated about Mac OS X is its blurry text rendering. When other operating systems drew crispy pixel-perfect black-on-white text, Mac OS X seemed to draw text: blurred, fuzzy, feathered-edges, sometime grey, overly soft, too smooth, like an out-of-focus CRT, melted or fluffy or runny-ink. Apple solved this problem with a premium sledgehammer: a feature called HiDPI, available in select models marketed as having 'Retina display'.

HiDPI display modes can be used in PCs which lack Retina display. All it takes is one or two lines to define display size/resolution (measurement unit is pixels). I much prefer HiDPI modes, even if not perfect linear-doubled (quadruple area).

First, without adding additional pixel dimensions to resolution list, run:
defaults write /Library/Preferences/com.apple.windowserver.plist DisplayResolutionEnabled -bool true
.

Find DisplayVendorID and DisplayProductID. This can be found with ColorSync Utility: Devices > Registered ColorSync devices: > Device > Factory Profile > Tag ( mmod ), fields Manufacturer and Model. In my example, Device is Color LCD, Manufacturer is 00000610, and Model is 00009CDF. This can be found in I/O Kit registry (use program ioreg), in my example:
+-o Root
  +-o MacBookAir6,2
    | +-o PCI0@0
    | | +-o AppleACPIPCI
    | | | +-o IGPU
    | | | | +-o AppleIntelFramebuffer@0
    | | | | | +-o display0
    | | | | | | +-o AppleBacklightDisplay
    | | | | | |       "DisplayVendorID" = 0x610
    | | | | | |       "DisplayProductID" = 0x9cdf
.

Display screen resolution is defined in override file, currently (Mac OS X 10.11 El Capitan) located in /System/Library/Displays/Contents/Resources/Overrides, or /System/Library/Displays/Overrides for older OS version. In my example, I will edit file
/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-9cdf
.

Override file is XML encoded as UTF-8. Consider saving a backup copy before modifying. Each resolution definition is between <data></data> tag, in <array></array> corresponding to <key>scale-resolutions</key>. A definition is eight octets of data (two 32-bit integers, width and height) represented in Base64. Following is an excerpt of my file.

Code: Select all

<?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>DisplayProductID</key>
        <integer>40159</integer>
        <key>DisplayProductName</key>
        <string>HiDPI 9CDF</string>
        <key>DisplayVendorID</key>
        <integer>1552</integer>
        <key>scale-resolutions</key>
        <array>
                <data>AAAEgAAAAtAAAAAB</data>
                <data>AAAEAAAAAwAAAAAB</data>
                <data>AAAEAAAAAoAAAAAB</data>
                <data>AAAFAAAAAyAAAAAB</data>
                <data>AAADIAAAAlgAAAAB</data>
                <data>AAADIAAAAfQAAAAB</data>
                <data>AAACgAAAAeAAAAAB</data>
                <data>AAAC0AAAAeAAAAAB</data>
                <data>AAAKAAAABkA=</data>
                <data>AAAJAAAABaA=</data>
                <data>AAAIAAAABQA=</data>
        </array>
</dict>
</plist>
I added last three <data> lines to get three new choices of scaled display: 1280×800 (HiDPI), 1152×720 (HiDPI), 1024×640 (HiDPI). I can convert base10 to base16 using my head and pencil+paper. I do not know how to encode Base64, and I do not want to learn, so I used a command line like
echo '0000080000000500' | xxd -plain -revert | base64
, to get AAAIAAAABQA=. This corresponds to 2048×1280 render resolution, which is HiDPI 'Looks like' 1024×640. The 'Looks like' is already set by Apple (AAAEAAAAAoAAAAAB), but if it were not already there, then I would add AAAEAAAAAoA=. For HiDPI to be available, simply ensure that desired 'Looks like' and render resolutions are in scale-resolutions array. That is all there is to it!

System Integrity Protection might prevent you from modifying override files. Use program csrutil to disable SIP. Or just keep SIP enabled, but make the modification from a different operating environment.



What is Mac OS X minimum display resolution?

Mac OS X once required minimum 800×600 display area. Today (OS X El Capitan 10.11), minimum seems to be 1024×720. Attempt to set either 1024×718 or 1023×720 meets confirmation prompt:
OS X > System Preferences wrote:Are you sure you want to switch to this scaled resolution?
When using this scaled resolution, some applications may not fit entirely on screen.
Aspect ratio of 1024×720 is 64:45 (repeating decimal 1,4222). I find it quite interesting, 64:45 is approximately same shape as IMAX! (I do not know who to believe, I see either 1,43:1 or 1,44:1 claimed in WWW.) So if personal craputer craptop industry insists to making squatter "wider" displays screens for "watching movies" instead of making a lovely productive screen shape (4:3 1,33:1), then I am willing to settle for IMAX shape.

We may never see new "QXGA" 2048×1536 laptop display panels, but I am hoping (with fingers crossed) to see "IMAX" 2048×1440.

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “OS-X Questions”

Who is online

Users browsing this forum: No registered users and 13 guests