https://github.com/jakehilborn/displayplacer Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code + Explore + All features + Documentation + GitHub Skills + Blog * Solutions + For + Enterprise + Teams + Startups + Education + By Solution + CI/CD & Automation + DevOps + DevSecOps + Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles + Repositories + Topics + Trending + Collections * Pricing [ ] * # 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 }} jakehilborn / displayplacer Public * Notifications * Fork 107 * Star 2.7k macOS command line utility to configure multi-display resolutions and arrangements. Essentially XRandR for macOS. License MIT license 2.7k stars 107 forks Star Notifications * Code * Issues 65 * Pull requests 4 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights jakehilborn/displayplacer This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master 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 Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 3 branches 3 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/j] Use Git or checkout with SVN using the web URL. [gh repo clone jakehi] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. 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 @jakehilborn jakehilborn Do not set origin if there is only 1 screen ... 036ecda Jul 30, 2022 Do not set origin if there is only 1 screen 036ecda Git stats * 76 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .gitignore added 'quiet:true' to silently ignore missing screens (#88) Jul 17, 2022 LICENSE Initial commit Jun 1, 2015 Makefile Optional screen id if one screen, and add tests (#39) Jul 30, 2022 README.md Optional screen id if one screen, and add tests (#39) Jul 30, 2022 animation.gif Screen config animation in README.md May 18, 2019 displayplacer.c Do not set origin if there is only 1 screen Jul 30, 2022 header.h Differentiate between disabled screen and mirroring screen. Only disa... Jul 30, 2022 tests.py Ensure reset_conf() between tests correctly sets conf Jul 30, 2022 View code displayplacer Usage: Instructions: Notes: Feedback: README.md [animation] displayplacer PRs Welcome macOS command line utility to configure multi-display resolutions and arrangements. Essentially XRandR for macOS. Install via Homebrew with brew tap jakehilborn/jakehilborn && brew install displayplacer or visit the releases tab. Usage: Show current screen info and possible resolutions: displayplacer list Apply screen config (hz & color_depth are optional): displayplacer "id: res:x hz: color_depth: scaling: origin:(,) degree:<0/90/180/270>" Apply screen config using mode: displayplacer "id: mode: origin:(,) degree:<0/90/180/270>" Apply screen config with mirrored screens: displayplacer "id: +<1stMirrorScreenId>+<2ndMirrorScreenId> res:x scaling: origin:(,) degree:<0/90/180/270>" Example w/ all features: displayplacer "id:18173D22-3EC6-E735-EEB4-B003BF681F30+F466F621-B5FA-04A0-0800-CFA6C258DECD res:1440x900 scaling:on origin:(0,0) degree:0" "id:4C405A05-8798-553B-3550-F93E7A7722BB res:768x1360 hz:60 color_depth:8 scaling:off origin:(1440,0) degree:90" "id:A46D2F5E-487B-CC69-C588-ECFD519016E5 mode:3 origin:(-1440,0) degree:270" Instructions: 1. Manually set rotations 1st*, resolutions 2nd, and arrangement 3rd. For extra resolutions and rotations read 'Notes' below. + Open System Preferences -> Displays + Choose desired screen rotations (use displayplacer for rotating internal MacBook screen). + Choose desired resolutions (use displayplacer for extra resolutions). + Drag the white bar to your desired primary screen. + Arrange screens as desired and/or enable mirroring. To enable partial mirroring hold the alt/option key and drag a display on top of another. 2. Use displayplacer list to print your current layout's args so you can create profiles for scripting/hotkeys with Automator, BetterTouchTool, etc. Notes: * *displayplacer list and system prefs only show resolutions for the screen's current rotation. * Use an extra resolution shown in displayplacer list by executing displayplacer "id: mode:" * Rotate your internal MacBook screen by executing displayplacer "id: degree:<0/90/180/270>" * The screen set to origin (0,0) will be set as the primary screen (white bar in system prefs). * The first screenId in a mirroring set will be the 'Optimize for' screen in the system prefs. You can only choose resolutions for the 'Optimize for' screen. If there is a mirroring resolution you need but cannot find, try making a different screenId the first of the set. * hz and color_depth are optional. If left out, the highest hz and then the highest color_depth will be auto applied. * Persistent screen ids always stay the same. Contextual screen ids change when switching GPUs or when switching ports. It's recommended to use persistent screen ids. In some rare cases, you may need to use contextual screen ids since the modes list changes when macOS switches GPUs. Feedback: Please create a GitHub Issue for any feedback, feature requests, bugs, Homebrew issues, etc. Happy to accept pull requests too! About macOS command line utility to configure multi-display resolutions and arrangements. Essentially XRandR for macOS. Resources Readme License MIT license Stars 2.7k stars Watchers 29 watching Forks 107 forks Releases 3 v1.2.0 Latest May 17, 2019 + 2 releases Packages 0 No packages published Contributors 9 * @jakehilborn * @andy-vacasa * @varenc * @ryandesign * @mnbf9rca * @vkhromov * @andrewdbond * @jiinurppa * @telias-tp Languages * C 77.7% * Python 16.9% * Makefile 5.4% Footer (c) 2023 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.