/*
* This small program sets the resolution to 3000x2000 in HiDPI mode.
*
* Unfortunately, this is necessary because macOS does not allow selecting 3:2
* resolutions as used by some travel displays.
*
* Compile with:
* clang -framework CoreGraphics -framework Foundation Set3000x2000Res.m
*/
#import <CoreGraphics/CoreGraphics.h>
#import <Foundation/Foundation.h>
int
main()
{
NSArray *allModes = (NSArray *)CGDisplayCopyAllDisplayModes(
CGMainDisplayID(), (CFDictionaryRef)@{
(NSString *)kCGDisplayShowDuplicateLowResolutionModes: @YES
});
CGDisplayModeRef pickedMode = NULL;
for (id object in allModes) {
CGDisplayModeRef mode = (CGDisplayModeRef)object;
if (CGDisplayModeGetWidth(mode) == 1500 &&
CGDisplayModeGetHeight(mode) == 1000 &&
CGDisplayModeGetRefreshRate(mode) == 60) {
pickedMode = mode;
break;
}
}
if (pickedMode == NULL) {
NSLog(@"Mode not found!");
return 1;
}
CGDisplayConfigRef config;
if (CGBeginDisplayConfiguration(&config) != kCGErrorSuccess) {
NSLog(@"CGBeginDisplayConfiguration failed!");
return 1;
}
if (CGConfigureDisplayWithDisplayMode(config, CGMainDisplayID(),
pickedMode, NULL) != kCGErrorSuccess) {
NSLog(@"CGConfigureDisplayWithMode failed!");
return 1;
}
if (CGCompleteDisplayConfiguration(config, kCGConfigurePermanently) !=
kCGErrorSuccess) {
NSLog(@"CGCompleteDisplayConfiguration failed!");
return 1;
}
return 0;
}