Make MacOS 26 consistently bad (unironically)
Alongside the various bugs you get, one of the issues of upgrading to MacOS 26 is that it has one of the most notorious inconsistency issues in windows corners. I'm not sure what exactly pushes product designers to like the excessive roundness11. One of the ugliest roundness examples I've ever seen is the current one in the YouTube UI design. I believe that UI design is the most influential field ever since designers just try to follow whatever big companies do (in fact I see this a lot in my work, when two designers are having an argument, one of them would resolve it to, let's see how apple draw that button), which means that we are probably going to see this ugly effect elsewhere very soon.
Anyway, many I had to upgrade recently to MacOS 26 too. And I found the edges ugly, like everyone else did. However, what's even uglier, is the inconsistency. Many people try to resolve this by disabling MacOS system integrity, which results in making them possibly vulnerable22. Arguable, since you just loose security over /root, which is not a big deal if someone already gained access to your machine, at least for me.. The reason why you need to disable SIP, is that to edit the dynamic libraries that system apps like Safari (which has crazy bad corners) use, you need to edit under the root. To me though, I don't find the corners so bad, but I find the inconsistency very annoying. So I think a better solution to this is; instead of making everything roundless, make everything more rounded. I forked a solution that makes things roundless to modify it to have my approach. It's simply as follows:
#import <AppKit/AppKit.h>
#import <objc/runtime.h>
static CGFloat kDesiredCornerRadius = 23.0;
static double swizzled_cornerRadius(id self, SEL _cmd) {
return kDesiredCornerRadius;
}
static double swizzled_getCachedCornerRadius(id self, SEL _cmd) {
return kDesiredCornerRadius;
}
static CGSize swizzled_topCornerSize(id self, SEL _cmd) {
return CGSizeMake(kDesiredCornerRadius, kDesiredCornerRadius);
}
static CGSize swizzled_bottomCornerSize(id self, SEL _cmd) {
return CGSizeMake(kDesiredCornerRadius, kDesiredCornerRadius);
}
__attribute__((constructor))
static void init(void) {
// Only apply to third-party GUI apps; skip CLI tools, daemons, and Apple system apps
NSString *bid = [[NSBundle mainBundle] bundleIdentifier];
if (!bid || [bid hasPrefix:@"com.apple."]) return;
Class cls = NSClassFromString(@"NSThemeFrame");
if (!cls) return;
Method m1 = class_getInstanceMethod(cls, @selector(_cornerRadius));
if (m1) method_setImplementation(m1, (IMP)swizzled_cornerRadius);
Method m2 = class_getInstanceMethod(cls, @selector(_getCachedWindowCornerRadius));
if (m2) method_setImplementation(m2, (IMP)swizzled_getCachedCornerRadius);
Method m3 = class_getInstanceMethod(cls, @selector(_topCornerSize));
if (m3) method_setImplementation(m3, (IMP)swizzled_topCornerSize);
Method m4 = class_getInstanceMethod(cls, @selector(_bottomCornerSize));
if (m4) method_setImplementation(m4, (IMP)swizzled_bottomCornerSize);
}Then compile, sign, and store:
clang -arch arm64e -arch x86_64 -dynamiclib -framework AppKit \
-o SafariCornerTweak.dylib \
SafariCornerTweak.m
sudo mkdir -p /usr/local/lib/
sudo cp SafariCornerTweak.dylib /usr/local/lib/
sudo codesign -f -s - /usr/local/lib/SafariCornerTweak.dylib
cp com.local.dyld-inject.plist ~/Library/LaunchAgents/com.local.dyld-inject.plistYou can have this plist too to load it in once your computer loads:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.local.dyld-inject</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>setenv</string>
<string>DYLD_INSERT_LIBRARIES</string>
<string>/usr/local/lib/SafariCornerTweak.dylib</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>Load it:
launchctl load ~/Library/LaunchAgents/com.local.dyld-inject.plistNow at least everything is consistently bad. #Programming