displaymode
is a command-line utility for changing the display resolution on macOS. It will work on macOS 10.6 or later.
In recent versions of macOS (e.g. macOS Ventura / v13), it's possible to set the resolution via Apple's built-in System Settings app, obviating the need for this utility. Firstly, enable System Settings > Displays > Advanced > "Show resolutions as list", then enable "Show all resolutions".
If you have Xcode (or the Xcode command line tools) installed, it's best to compile it yourself. From the terminal:
git clone https://github.com/p00ya/displaymode.git
cd displaymode
clang -std=c11 -lm -framework CoreFoundation -framework CoreGraphics -o displaymode displaymode.c
If you don't have Xcode installed, then you can download the binary (note this is not a zip file) then give the OS permission to run it. From the terminal:
curl -LO https://github.com/p00ya/displaymode/releases/latest/download/displaymode
xattr -d com.apple.quarantine displaymode
chmod a+x displaymode
codesign -f -s "-" -v displaymode
To change the resolution of the main display to 1440x900, run the command:
./displaymode t 1440 900
To change the resolution of the secondary display to 1440x900, run the command:
./displaymode t 1440 900 1
You can also specify a particular refresh rate:
./displaymode t 1440 900 @60
You can get a list of active displays and available resolutions by running:
./displaymode d
The output will be a table like:
Display 0 (MAIN):
2560 x 1600 @60.0Hz *
1280 x 800 @60.0Hz
2880 x 1800 @60.0Hz
640 x 480 @60.0Hz !
Display 1:
800 x 600 @75.0Hz *
where each row is the width x height in pixels. *
indicates the current mode, and !
indicates modes that are not usable for the desktop.
./displaymode h
prints a summary of the options.
./displaymode v
prints the version and copyright notice.