A proof-of-concept tool for modifying window corner radii system-wide on macOS using runtime code injection.
This tool requires System Integrity Protection (SIP) to be disabled and is intended for personal use only. Disabling SIP can expose your system to security risks. Use at your own risk.
- GUI Application: Modern SwiftUI menu bar app for easy control
- System-wide Modification: Change corner radius for all windows
- Per-Application Configuration: Set custom radius for specific apps
- Command-line Interface: Full CLI for scripting and automation
- Live Monitoring: Detect and configure apps as they launch
- Launch Agent Management: System-wide injection control
- First-Run Setup Wizard: Guided setup experience
- macOS 14.x or later (tested on Sonoma/Sequoia, targeting Tahoe)
- Xcode Command Line Tools
- SIP disabled (see Installation)
# Build the CLI tools and dylib
make
# Install the system components
make install
# Build and run the GUI
cd WindowRadiusMenu
swift build
swift runThe GUI provides an intuitive interface for all features. See GUI Usage Guide for details.
# Build the project
make
# Install (requires SIP disabled)
make install
# Configure radius (e.g., 8.0 pixels)
windowradius set 8.0
# Configure per-app
windowradius set-app com.apple.TextEdit 15.0
# Enable system-wide injection
make load-agent
# Restart affected applications to see changes- GUI Usage Guide - Comprehensive GUI application guide
- Installation Guide - Setup instructions including SIP disabling
- Architecture - Technical implementation details
- Testing Guide - Testing procedures and scenarios
.
├── src/
│ ├── injection/ # Core injection library (dylib)
│ ├── config/ # Configuration management
│ └── cli/ # Command-line interface
├── WindowRadiusMenu/ # SwiftUI GUI application
│ ├── App/ # Application entry point
│ ├── Views/ # SwiftUI views and components
│ ├── Models/ # Data models and preference manager
│ └── Services/ # System integration services
├── scripts/ # Helper scripts
├── launchd/ # Launch agent configuration
└── docs/ # Documentation
Launch the GUI for full visual control:
cd WindowRadiusMenu && swift runFeatures:
- Global Settings: Set system-wide corner radius with slider
- Applications: Configure per-app settings with live app list
- Advanced Settings: Manage launch agent and system integration
- Setup Wizard: First-run guided setup
See the GUI Usage Guide for detailed instructions.
# Global commands
windowradius set <radius> # Set global corner radius
windowradius enable # Enable globally
windowradius disable # Disable globally
windowradius status # Show current settings
# Per-app commands (v2.0)
windowradius set-app <bundle-id> <radius> # Set app-specific radius
windowradius enable-app <bundle-id> # Enable specific app
windowradius disable-app <bundle-id> # Disable specific app
windowradius get-app <bundle-id> # Get app settings
windowradius list-apps # List configured apps
windowradius reset-app <bundle-id> # Reset to global settings
# Testing (without system-wide injection)
./scripts/injectApp.sh /Applications/TextEdit.appExamples:
# Set global radius to 10 pixels
windowradius set 10.0
# TextEdit gets custom 15px radius
windowradius set-app com.apple.TextEdit 15.0
# Disable radius for Safari
windowradius disable-app com.apple.Safari
# View all configurations
windowradius list-appsmake uninstallOr use the uninstall script:
./scripts/uninstall.sh- Requires SIP disabled
- May not work with all applications (Electron, Qt apps may vary)
- System applications may resist injection
- May break with macOS updates
- Injected processes lose code signature validity
This software is released into the public domain under the Unlicense.
You are free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
Copyright © 2025 2075.io