57 lines
1.4 KiB
Objective-C
57 lines
1.4 KiB
Objective-C
/*
|
|
* 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;
|
|
}
|