github.com Open in urlscan Pro
140.82.121.4  Public Scan

Submitted URL: http://betterdisplay.pro/
Effective URL: https://github.com/waydabber/BetterDisplay
Submission: On June 29 via api from US — Scanned from DE

Form analysis 1 forms found in the DOM

GET /waydabber/BetterDisplay/search

<form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="420628737" data-scoped-search-url="/waydabber/BetterDisplay/search" data-owner-scoped-search-url="/users/waydabber/search"
  data-unscoped-search-url="/search" data-turbo="false" action="/waydabber/BetterDisplay/search" accept-charset="UTF-8" method="get">
  <label class="form-control input-sm header-search-wrapper p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center">
    <input type="text" class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable" data-hotkey="s,/" name="q" data-test-selector="nav-search-input" placeholder="Search"
      data-unscoped-placeholder="Search GitHub" data-scoped-placeholder="Search" autocapitalize="off" role="combobox" aria-haspopup="listbox" aria-expanded="false" aria-autocomplete="list" aria-controls="jump-to-results" aria-label="Search"
      data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" spellcheck="false" autocomplete="off">
    <input type="hidden" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" value="okx8rrHmaXnwIw+A4hf/Z0vWkJfduKZcfMo4jWWKmp49hNQTAVj3KxwdgVDkvXIahOVUw+ACupsq9gxW9nFnxg==">
    <input type="hidden" class="js-site-search-type-field" name="type">
    <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1 header-search-key-slash">
      <path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path>
      <path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path>
    </svg>
    <div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
      <ul class="d-none js-jump-to-suggestions-template-container">
        <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
          <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="suggestion">
    <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
      <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
      <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
      <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
    </div>

    <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">

    <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
    </div>

    <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
      <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
        In this repository
      </span>
      <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
        All GitHub
      </span>
      <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
    </div>

    <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
      Jump to
      <span class="d-inline-block ml-1 v-align-middle"></span>
    </div>
  </a>
        </li>
      </ul>
      <ul class="d-none js-jump-to-no-results-template-container">
        <li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
          <span class="color-fg-muted">No suggested jump to results</span>
        </li>
      </ul>
      <ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
        <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
          <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="scoped_search">
    <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
      <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
      <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
      <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
    </div>

    <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">

    <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
    </div>

    <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
      <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
        In this repository
      </span>
      <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
        All GitHub
      </span>
      <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
    </div>

    <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
      Jump to
      <span class="d-inline-block ml-1 v-align-middle"></span>
    </div>
  </a>
        </li>
        <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-owner-scoped-search d-none" role="option">
          <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="owner_scoped_search">
    <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
      <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
      <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
      <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
    </div>

    <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">

    <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
    </div>

    <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
      <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this user">
        In this user
      </span>
      <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
        All GitHub
      </span>
      <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
    </div>

    <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
      Jump to
      <span class="d-inline-block ml-1 v-align-middle"></span>
    </div>
  </a>
        </li>
        <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
          <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="global_search">
    <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
      <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
      <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
      <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
    <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
    </div>

    <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">

    <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
    </div>

    <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
      <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
        In this repository
      </span>
      <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
        All GitHub
      </span>
      <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
    </div>

    <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
      Jump to
      <span class="d-inline-block ml-1 v-align-middle"></span>
    </div>
  </a>
        </li>
      </ul>
    </div>
  </label>
</form>

Text Content

Skip to content
Sign up
 * Product
    * Features
    * Mobile
    * Actions
    * Codespaces
    * Copilot
    * Packages
    * Security
    * Code review
    * Issues
    * Integrations
    * GitHub Sponsors
    * Customer stories

 * Team
 * Enterprise
 * Explore
    * Explore GitHub
    * Learn and contribute
    * Topics
    * Collections
    * Trending
    * Skills
    * GitHub Sponsors
    * Open source guides
    * Connect with others
    * The ReadME Project
    * Events
    * Community forum
    * GitHub Education
    * GitHub Stars program

 * Marketplace
 * Pricing
    * Plans
    * Compare plans
    * Contact Sales
    * Education

 * In this repository All GitHub ↵
   Jump to ↵

 * No suggested jump to results

 * In this repository All GitHub ↵
   Jump to ↵
 * In this user All GitHub ↵
   Jump to ↵
 * In this repository All GitHub ↵
   Jump to ↵

Sign in
Sign up

{{ message }}
waydabber / BetterDisplay Public
 * Sponsor
 * Notifications
 * Fork 142
 * Star 5k

Unlock your displays on your Mac! Smooth scaling, HiDPI unlock, XDR/HDR extra
brightness upscale, DDC, brightness and dimming, dummy displays, PIP and lots
more!

betterdisplay.pro
5k stars 142 forks
Star
Notifications
 * Code
 * Issues 47
 * Pull requests 0
 * Discussions
 * Actions
 * Security
 * Insights

More
 * Code
 * Issues
 * Pull requests
 * Discussions
 * Actions
 * Security
 * Insights


WAYDABBER/BETTERDISPLAY

This commit does not belong to any branch on this repository, and may belong to
a fork outside of the repository.
landing
Switch branches/tags

Branches Tags
Could not load branches
Nothing to show

{{ refName }} default
View all branches
Could not load tags
Nothing to show
{{ refName }} default

View all tags
4 branches 46 tags

Go to file Code
 * Clone
   HTTPS GitHub CLI
   
   Use Git or checkout with SVN using the web URL.
   
   Work fast with our official CLI. Learn more.

 * Open with GitHub Desktop
 * Download ZIP

LAUNCHING GITHUB DESKTOP

If nothing happens, download GitHub Desktop and try again.

LAUNCHING GITHUB DESKTOP

If nothing happens, download GitHub Desktop and try again.

LAUNCHING XCODE

If nothing happens, download Xcode and try again.

LAUNCHING VISUAL STUDIO CODE

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.


LATEST COMMIT

waydabber Update README.md
…
c0544a6 12 hours ago
Update README.md
c0544a6


GIT STATS

 * 407 commits


FILES

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
.github
Add files via upload
10 days ago
.gitignore
Initial commit
8 months ago
README.md
Update README.md
12 hours ago
View code
BetterDisplay About Features Installation Fully scalable HiDPI desktop with
BetterDisplay How to unlock scaling and HiDPI for my display? Dummy mirroring
method Discord channel Compatibility Some notable articles about BetterDisplay
(BetterDummy): Supporting the project / purchasing BetterDisplay Pro To those
who backed the BetterDummy open-source project in the past (Open Collective)
Privacy


README.MD


BETTERDISPLAY

Display Management, Custom Resolutions, Brightness Adjustment and Dummy Displays
for Macs - a menubar app from one of the makers of MonitorControl.






--------------------------------------------------------------------------------


ABOUT

BetterDisplay (formerly BetterDummy) is a truly wonderful tool! It let's you
convert your displays to fully scalable screens, allows brightness control,
provides XDR/HDR upscaling (extra brightness beyond 100% on compatible
displays), full dimming to black, helps you create and manage virtual displays
(dummies) for your Mac, create Picture in Picture windows of your displays and
gives you a host of other features to manage your display's settings easily from
the menu bar.




FEATURES

 * NEW! Convert your internal and natively connected external displays to
   smoothly-scaled HiDPI displays on Apple Silicon - now even without mirroring
   a dummy (displays with notch, HDR, HDCP, high refresh rate fully supported)!
   *
 * NEW! Reach the full brightness potential of your XDR or HDR display! *
 * NEW! Change the display's brightness, volume and colors via software and
   hardware (DDC) control via sliders and native or custom keyboard shortcuts!
 * NEW! Create custom HiDPI resolutions for real displays manually and redefine
   certain system display parameters!
 * Create any number of dummies (virtual screens) with varying aspect ratios.
 * Use headless Macs (servers) with any resolution and HiDPI mode for remote
   access.
 * Create Picture in Picture window for any real or dummy displays. *
 * Redirect your display's contents (real or dummy) to an other screen via
   streaming. *
 * If you are using a big TV up close, use the bottom half of your TV as a wide
   screen display (off-center streaming). *
 * Scale Sidecar resolutions. *
 * Portrait SideCar support. *
 * Better quality zooming (System Preferences»Accessibility»Zoom) or High
   Quality screenshots even on 1080p displays
 * Easily change the resolution of your real and dummy displays via a slider (or
   submenu) from the menubar.
 * Quickly accessible refresh rate and screen rotation menu.
 * Simplify creating mirrored sets. *
 * Easily move around displays relative to each other using the app menu.
 * Quickly designate a display to be main display.
 * Associate dummies with displays for auto connect/disconnect.
 * Keyboard shortcuts for basic operations.
 * Advanced keyboard shortcuts support. *
 * Custom dummies (resolution, orientation, naming). *
 * Create a dummy optimized for a real display. *

... and more is coming! :)

Note: featues marked with an asterisk (*) require a Pro license.


INSTALLATION

 1. Download the latest version
 2. Open the DMG file and move the app to Applications folder on your Mac as
    instructed.
 3. Start the app.
 4. Use the app menu bar item to interact with the app.


FULLY SCALABLE HIDPI DESKTOP WITH BETTERDISPLAY

Some Macs tend to have issues with custom resolutions. Apple Silicon Macs
notoriously don't allow sub-4K resolution displays to have HiDPI ("Retina")
resolutions even though most 1440p display would greatly benefit from having a
HiDPI "Retina" mode. On other Macs the resolution options for wide displays are
too constrained.

BetterDisplay solves the problem by unlocking your screens making them fully
scalable natively while providing a nice HiDPI resolution slider to freely scale
the desktop size. Also available is the option to create a flexible virtual
"dummy" displays that support an unprecedented range of Retina resolutions. You
can then utilize this dummy display as a mirror source for your display
achieving any HiDPI resolution or for other purposes.

Advantages of BetterDisplay over a physical 4K HDMI dummy plug or mirroring your
internal display to have HiDPI...

 * Your HDMI port will remain usable for an other display on the Mac Mini or an
   ugly dongle won't stick out of your MacBook Pro
 * Your internal screen will be available as an extended space on a MacBook (or
   you can use clamshell mode).
 * Does not suffer from issues that prevalent with the physical dummy (like
   jittery mouse cursor).
 * Offers a much wider range of HiDPI and standard resolutions.
 * Works with all aspect ratios, does not depend on what resoluations are
   recorded in the dummy's EDID/firmware.
 * Available instantly.


HOW TO UNLOCK SCALING AND HIDPI FOR MY DISPLAY?

BetterDisplay has several uses and lots of features, but one of the most
seeked-after one is unlocking fully scaled desktops and HiDPI resolutions on
Apple Silicon macs.

To enable the feature,

 1. Start the app and opten the app menu (locate the BetterDisplay icon in the
    menu bar).
 2. Open Settings (the gear icon at the bottom of the menu).
 3. Navigate to the Displays section in Settings (gear icon),
 4. enable the Edit and manage the system configuration of this display feature
    first under the display you want to make smoothly scalable (the list can
    contain more than one display in a multi-monitor setup!),
 5. and then enable the Allow smooth resolution scale option just below it as it
    appears.
 6. If you did this for all the relevant displays, click on the Apply System
    Display Configuration button at the bottom of the screen.
 7. Enter your admin password and then reboot.
 8. After reboot, use the resolution sliders in the app menu to scale the
    desktop.


Notes and troubleshooting...

 * The smooth scaling option can be enabled on a per display basis, so if you
   want more of your displays to have this feature, don't forget to scroll down
   in the app Settings > Displays tab and make the setting for each of your
   displays! :)
 * The feature is compatible with macOS Monterey 12.4+, macOS Ventura and Apple
   Silicon macs and requires natively connected (DisplayPort, HDMI) or built-in
   screens. The maximum allowed scaled (HiDPI) desktop size can't exceed the
   native display resolution. You'll also need the latest BetterDisplay version.
 * The feature works if the system properly detects the Native panel pixel
   resolution. If this is not correctly shown for your display under Settings >
   Displays, please select the Edit native panel pixel resolution option and
   enter the correct values!
 * The smooth scaling slider will appear only if the Resolution selector under
   Settings/App menu is set to slider mode.
 * The slider 100% will be the Default resolution (on normally LoDPI display
   this tends to be the native resoltuion - which will mean the slider maxes out
   at 100%, on HiDPI display half of the native resolution - which will make the
   resolution slider max out at 200%). If you want to rescale the resolution
   slider, change the Default resolution to an accessible different resolution
   than it is set.
 * The maximum resolution that can be set for low PPI displays corresponds to
   the Native panel pixel resolution which is available only as normal
   resolution (not HiDPI). Converting the native resolution to HIDPI would not
   make sense (except for some special use cases like screenshot and
   accessibility zooming quality improvement) - for this or for achieving
   higher-than-native-resolution scaling (for extra screen real estate) you can
   continue to use dummy mirroring.
 * The maximum horizontal pixel count seems to be constrained on the entry-level
   M1 configurations to 6K (M1 Pro/Max/Ultra seems to be unaffected) which might
   pose an issue to users with ultra-wide screens trying to go beyond a certain
   horizontal resolution (the limit seems to be 3072px HiDPI which is 6144px
   actual).


DUMMY MIRRORING METHOD

An alternative (for some scenarios the only valid) approach is to create a
mirrored dummy in order to use custom resolutions. This works for Sidecar and
other non-native devices (like DisplayLink) and also enables scaling beyond the
native resolution of the display panel on Apple Silicon (for added screen real
estate). Follow these steps to do this:

 1. Start the app and locate the app menu (you'll see a BetterDisplay icon in
    the menu bar).
 2. In the app menu locate your display's name and click on the Settings
    sub-menu under it.
 3. Click on the Create Dummy for This Display option.
 4. In the ensuing pop-up select Connect and Set up Mirroring.

It's that simple. Afterwards you should see your dummy mirrored to your display
where you can use the slider to change the resolution quickly.

Notes and troubleshooting for the dummy mirroring method...

 * Due to the finnicky nature of macOS display and mirror management, sometimes
   setting up the mirror fails or the mirror reverts to work 'the other way
   around' (namely instead of the dummy being mirrored to the display, the
   display is being mirrored to the dummy). In this case you should stop the
   mirroring (select Mirror Target > Stop Mirroring) and reconfigure the mirror
   under the dummy in the display list Mirror Target > Display Name.
 * Sometimes the created mirror might not be the main display (the display with
   the menu bar and the one where windows are located by default) or a created
   but invisible dummy becomes the main display which makes moving forward
   difficult. You can easily change any display or mirror set to be main by
   simply choosing Settings > Set as main under the display in the app menu.
 * If you find that your new dummy or dummy mirror is not located where you
   actually want it to be relative to your other displays, you can easily move
   around a display using Settings > Move Next to ... from the app menu.
 * You can configure both mirroring, main status, resolution and everything else
   in System Preferences the old fashioned way as well. If you are not using
   Pro, you actually need to do this. Follow the this guide on how to do this.
 * If you really can't set up what you want, just hop over to the BetterDisplay
   Discord channel where you can lay out your problem and eventually we'll help
   you out! :)


DISCORD CHANNEL

You can join the discussion on the BetterDisplay Discord channel. If you have
any issues or questions, don't hesitate to ask!


COMPATIBILITY

 * The app is compatible with all Apple Silicon macs running macOS Monterey
   (MacBook Air, Mini, 2020 and 2021 MacBook Pros). Development and testing also
   takes place on Apple Silicon.
 * Most features of the app is also compatible with Intel Macs capable of
   officially running macOS Big Sur or newer. However, dummy mirroring and
   unlocking smooth resolution scale might not work as expected especially on
   Intel Macs, especially those with AMD GPUs.
 * Smooth resolution scaling requires macOS Monterey 12.4 or newer and natively
   connected displays. Entry level M1 machines have a max. horizontal resolution
   limitation of 6K (this limitation does not apply on M1 Pro/Max/Ultra) with
   smooth scaling.
 * Dummy mirroring based resolution unlock works with every Apple Silicon macs.
   Dummies have some limitations (60Hz refresh rate, lack of HDCP and HDR
   support).
 * External display hardware backlight control and volume control require DDC
   capable, natively connected display or a natively supported Apple display.
   The HDMI ports of 2018+ Macs do not support DDC, so you have to use
   USB-C/DisplayPort (most USB-C to HDMI dongles work as well). Some docks
   (especially DisplayLink ones) do not work. Software brightness control is
   available with all displays.
 * XDR/HDR upscaling requires an Apple XDR display (built-in or external) or a
   natively connected HDR display (Vesa DisplayHDR 600 or higher recommended).
 * The app is compatible with headless macs to create custom dummy resolutions
   for remote access.


SOME NOTABLE ARTICLES ABOUT BETTERDISPLAY (BETTERDUMMY):

 * https://www.theregister.com/2021/12/03/apple_m1_drivers
 * https://9to5mac.com/2021/11/23/enable-1440p-retina-scaling-m1-mac/
 * https://www.macworld.com/article/549493/how-to-m1-mac-1440p-display-hidpi-retina-scaling.html

Also the app made it to the featured news (once took the first spot) in Hacker
News.

 * https://news.ycombinator.com/item?id=29064234
 * https://news.ycombinator.com/item?id=29469837


SUPPORTING THE PROJECT / PURCHASING BETTERDISPLAY PRO

You can support development by purchasing a BetterDisplay Pro license directly
in the app. Just navigate to Settings (gear icon) > Pro and click on Buy
BetterDisplay Pro. Please note that even if you don't buy the app, you can still
use many of the features for free (if you are a non-business user).

Check out the license terms for the app.

For more info, see this discussion. The original BetterDummy open-source version
is available for free for business and home users.


TO THOSE WHO BACKED THE BETTERDUMMY OPEN-SOURCE PROJECT IN THE PAST (OPEN
COLLECTIVE)

 * I'd like to thank you for backing the BetterDummy open source project in the
   past by providing you with a coupon code so you can get a BetterDisplay Pro
   license for no additional cost. If you'd like to receive a code, please
   contact me at Discord by sending a private message or opening a separate
   discussion and posting a screenshot of the confirmation you received from
   Open Collective. I'll respond with a coupon code (some patience might be
   needed). Thank you!

I am thankful for each of you who contributed to the BetterDummy project.

Notabe contributors of the open-source project


Generous contributors, who donated $50 or more for the open-source project:

 * Patrick Mast - $222
 * Riten Jaiswal - $200
 * Wesley - $200
 * Dean Herbert - $150
 * Myles Dear - $100
 * Jose Tejera - $100
 * Bill Southworth - $100
 * Will_from_CA - $100
 * MFB Technologies - $100
 * Brian Conway - $60
 * Ron W - $61
 * Michael Charo - $50
 * Jens Kielhorn - $50
 * Victor - $50
 * Nicholas Eidler - $50
 * Jeff Nash - $50

Additional notable contributors, who donated $20 or more:

Derek Johnson
Jerry C
Jung Yeop (Steve) Kim
Jason
Kaz
Nikola
wanyeki
Felix
Emilio P Egido
Thomas Varghese
Reactual
Stephen Richardson
Peter Szombati
NP
David Verdonck
Knut Holm
Jan Behrmann
Danilo
Andrew Braithwaite
Splay Display
Incognito
Florian Gross
David Richardson
Jari Hanhela
William Edney
David W
Chetan Kunte
Martin Clayton
Nikola Milojević
Wolf1701
Arthur Müller
Tom Dai
Jeff Lopes
Jormsen
Yeo Chang Long
Wayne G
Udome
Bart Krijnen
jviide
Keezy
SenPng
Jakub Koňas
docljn
Adam Lounds
Pablo Sichert
Ville Rinne
Gheorghe Aurel Pacurar
Peter F.
Thomas Brian
Jedrzej Gontarczyk
Chris Brooks
Wang Yang
Arjen
Peter Cole
Simon Jarvis
mgiiklel
Eric
Alasdair
Friedemann Wachsmuth
Pranav Raj S
Eddy
George Billios
Alfred Visnevsky
Martin Cohen
HWM
Oliver Eilhard
Alastair Thomson
Örn Arnarson
Chris Spiegl
Radim Balner
yipru
petertriho

+ guest supporters

Please don't forget to star the GitHub page and spread the word about the app.
:)


PRIVACY

 * Licensing uses the third party provider Paddle as backend. This also means
   that the app communicates over the network with Paddle's servers to verify
   licensing, trial status and facilitate check-out using Paddle's SDK. Besides
   data required for licensing purposes by Paddle's services, no other info is
   transferred over the network.
 * I decided not to have a marketing list (marketing opt-in) of any kind. I also
   do not build any usage database or collect unique (and not unique) IDs either
   - besides what Paddle collects and presents on its dashboard for me (to keep
   track of valid software licenses).
 * Aside from Paddle the only other form of network communication by the app is
   what is required for the built-in updater to work in order to receive the
   update metadata and download the update binary.


ABOUT

Unlock your displays on your Mac! Smooth scaling, HiDPI unlock, XDR/HDR extra
brightness upscale, DDC, brightness and dimming, dummy displays, PIP and lots
more!

betterdisplay.pro


TOPICS

macos mac resolution ui scale custom display screen virtual dummy retina ddc
wide hdmi mini m1 hidpi 4k ultrawide qhd


RESOURCES

Readme


STARS

5k stars


WATCHERS

31 watching


FORKS

142 forks


RELEASES 15

v1.2.7 Latest
3 days ago
+ 14 releases


SPONSOR THIS PROJECT


PACKAGES 0

No packages published


© 2022 GitHub, Inc.


FOOTER NAVIGATION

 * Terms
 * Privacy
 * Security
 * Status
 * Docs
 * Contact GitHub
 * Pricing
 * API
 * Training
 * Blog
 * About


You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You
signed out in another tab or window. Reload to refresh your session.