
macwmfx is a macOS tweak for ammonia injector that enables configurable WindowManager Effects to macOS, similar to what swayfx does for sway on linux.
macwmfx --reloadmacwmfx uses a client-server architecture for reliable operation:
libmacwmfx_server.dylib): Runs as an ammonia tweak, handles all window management operations and app lifecycle managementmacwmfx): Communicates with the server via XPC messaginglibmacwmfx.dylib): Injected into applications to apply window effectsThis architecture ensures that:
Download and install ammonia from bedtime
Disable SIP, library validation, and enable preview arm64e abi
Clone and build:
git clone https://github.com/aspauldingcode/macwmfx && cd macwmfx
make help
Note: In the future,
macwmfxwill be packaged for Nixpkgs and Homebrew. This will allow installation with:
nix profile install github:aspauldingcode/macwmfx(or via flakes)brew install macwmfxStay tuned for official package availability!
macwmfx uses a JSON configuration file. To get started:
Create default configuration:
./build/macwmfx --generate-config
This will automatically:
~/.config/macwmfx//Library/Application Support/macwmfx/ (with elevated privileges if needed)~/.config/macwmfx/config.jsonEdit your configuration:
# Edit the user config (recommended)
nano ~/.config/macwmfx/config.json
# Or edit the system config (same file due to symlink)
sudo nano "/Library/Application Support/macwmfx/config.json"
Apply changes:
# Restart all open apps to apply changes
macwmfx --reload
# Show all available build commands and options
make help
The build system supports multiple configurations and targets. Run make help to see all available commands and their descriptions.
The macwmfx CLI tool provides several useful commands and handles all permission requirements automatically:
# Show all available commands
./build/macwmfx
# Create default configuration (handles sudo automatically)
./build/macwmfx --generate-config
# Restart all open apps (kills them and restarts)
./build/macwmfx --reload
# Server management
./build/macwmfx --start # Start the background server
./build/macwmfx --stop # Stop the background server
./build/macwmfx --status # Show server status
# Observe macwmfx logs
./build/macwmfx --observe-logs
# Runtime configuration changes
./build/macwmfx enable-borders
./build/macwmfx disable-borders
./build/macwmfx set-border-width 3.0
./build/macwmfx set-border-radius 10.0
./build/macwmfx enable-resize
./build/macwmfx disable-resize
Note: The CLI tool automatically requests elevated privileges when needed (e.g., for system-level configuration). No manual sudo commands are required.
macwmfx --reload CommandThe macwmfx --reload command is a powerful feature that:
This ensures that configuration changes take effect immediately across all applications. The background server architecture allows this to work reliably without the command being terminated mid-process.
The background server (libmacwmfx_server.dylib) runs as an ammonia tweak and:
All commands are sent to the server via XPC messaging, ensuring:
For detailed development information, architecture overview, and contribution guidelines, see Dev_Guide.md.
Feel free to contribute! However, please note that this project is actively being refactored, so PRs may not be merged until the new architecture is finalized. Please provide appropriate attribution rather than simply rebranding the code.
This project is open source. Please be respectful of the open source community and provide appropriate attribution for any adaptations.
76 commits
Objective-C
82.6%
C
8.4%
Makefile
4.4%
Objective-C++
2.6%
C++
1.3%

macwmfx is a macOS tweak for ammonia injector that enables configurable WindowManager Effects to macOS, similar to what swayfx does for sway on linux.
macwmfx --reloadmacwmfx uses a client-server architecture for reliable operation:
libmacwmfx_server.dylib): Runs as an ammonia tweak, handles all window management operations and app lifecycle managementmacwmfx): Communicates with the server via XPC messaginglibmacwmfx.dylib): Injected into applications to apply window effectsThis architecture ensures that:
Download and install ammonia from bedtime
Disable SIP, library validation, and enable preview arm64e abi
Clone and build:
git clone https://github.com/aspauldingcode/macwmfx && cd macwmfx
make help
Note: In the future,
macwmfxwill be packaged for Nixpkgs and Homebrew. This will allow installation with:
nix profile install github:aspauldingcode/macwmfx(or via flakes)brew install macwmfxStay tuned for official package availability!
macwmfx uses a JSON configuration file. To get started:
Create default configuration:
./build/macwmfx --generate-config
This will automatically:
~/.config/macwmfx//Library/Application Support/macwmfx/ (with elevated privileges if needed)~/.config/macwmfx/config.jsonEdit your configuration:
# Edit the user config (recommended)
nano ~/.config/macwmfx/config.json
# Or edit the system config (same file due to symlink)
sudo nano "/Library/Application Support/macwmfx/config.json"
Apply changes:
# Restart all open apps to apply changes
macwmfx --reload
# Show all available build commands and options
make help
The build system supports multiple configurations and targets. Run make help to see all available commands and their descriptions.
The macwmfx CLI tool provides several useful commands and handles all permission requirements automatically:
# Show all available commands
./build/macwmfx
# Create default configuration (handles sudo automatically)
./build/macwmfx --generate-config
# Restart all open apps (kills them and restarts)
./build/macwmfx --reload
# Server management
./build/macwmfx --start # Start the background server
./build/macwmfx --stop # Stop the background server
./build/macwmfx --status # Show server status
# Observe macwmfx logs
./build/macwmfx --observe-logs
# Runtime configuration changes
./build/macwmfx enable-borders
./build/macwmfx disable-borders
./build/macwmfx set-border-width 3.0
./build/macwmfx set-border-radius 10.0
./build/macwmfx enable-resize
./build/macwmfx disable-resize
Note: The CLI tool automatically requests elevated privileges when needed (e.g., for system-level configuration). No manual sudo commands are required.
macwmfx --reload CommandThe macwmfx --reload command is a powerful feature that:
This ensures that configuration changes take effect immediately across all applications. The background server architecture allows this to work reliably without the command being terminated mid-process.
The background server (libmacwmfx_server.dylib) runs as an ammonia tweak and:
All commands are sent to the server via XPC messaging, ensuring:
For detailed development information, architecture overview, and contribution guidelines, see Dev_Guide.md.
Feel free to contribute! However, please note that this project is actively being refactored, so PRs may not be merged until the new architecture is finalized. Please provide appropriate attribution rather than simply rebranding the code.
This project is open source. Please be respectful of the open source community and provide appropriate attribution for any adaptations.
76 commits
Objective-C
82.6%
C
8.4%
Makefile
4.4%
Objective-C++
2.6%
C++
1.3%