-
-
Notifications
You must be signed in to change notification settings - Fork 649
Disabling System Integrity Protection
System Integrity Protection ("rootless") is a security feature of macOS first introduced in 10.13, then further locked down in 10.14.
System Integrity Protection protects some files and directories from being modified — even from the root user. yabai needs System Integrity Protection to be (partially) disabled so that it can inject a scripting addition into Dock.app, which owns the sole connection to the macOS window server. Many features of yabai require this scripting addition to be running such that yabai can modify windows, spaces and displays in a way that otherwise only Dock.app could.
The following features of yabai require System Integrity Protection to be (partially) disabled:
- focus/move/swap/create/destroy space
- remove window shadows
- enable window transparency
- enable window animations
- scratchpad windows
- control window layers (make windows appear topmost or on the desktop)
- sticky windows (make windows appear on all spaces on the display that contains the window)
- toggle picture-in-picture for any given window
See this comment for a more in-depth explanation.
-
Turn off your device
-
Intel (apple docs):
Hold down command ⌘R while booting your device.Apple Silicon (apple docs):
Press and hold the power button on your Mac until “Loading startup options” appears.
Click Options, then click Continue. -
In the menu bar, choose
Utilities
, thenTerminal
#
# APPLE SILICON
#
# If you're on Apple Silicon macOS 13.x.x OR newer
# Requires Filesystem Protections, Debugging Restrictions and NVRAM Protection to be disabled
# (printed warning can be safely ignored)
csrutil enable --without fs --without debug --without nvram
# If you're on Apple Silicon macOS 12.x.x
# Requires Filesystem Protections, Debugging Restrictions and NVRAM Protection to be disabled
# (printed warning can be safely ignored)
csrutil disable --with kext --with dtrace --with basesystem
#
# INTEL
#
# If you're on Intel macOS 11.x.x OR newer
# Requires Filesystem Protections and Debugging Restrictions to be disabled (workaround because --without debug does not work)
# (printed warning can be safely ignored)
csrutil disable --with kext --with dtrace --with nvram --with basesystem
- Reboot
- For Apple Silicon; enable non-Apple-signed arm64e binaries
# Open a terminal and run the below command, then reboot
sudo nvram boot-args=-arm64e_preview_abi
- You can verify that System Integrity Protection is turned off by running
csrutil status
, which returnsSystem Integrity Protection status: disabled.
if it is turned off (it may showunknown
for newer versions of macOS when disabling SIP partially).
If you ever want to re–enable System Integrity Protection after uninstalling yabai; repeat the steps above, but run csrutil enable
instead at step 4.
Please note that System Integrity Protection will be re–enabled during device repairs or analysis at any Apple Retail Store or Apple Authorized Service Provider. You will have to repeat this step after getting your device back.
This wiki is a community–driven documentation page. If you want to request a topic for this wiki to address or discuss its content, head over to issue #5.
General
Installation
Configuration
Commands
Tips and Tricks
- Quickly restart the yabai launch agent
- Split yabai configuration across multiple files
- Fix spaces reordering automatically
- Fix folders opened from Desktop not tiling
- Auto updating from HEAD via brew
- Tiling Emacs
- Flash highlight to identify focused window
- Constrain space focus to current display with optional cycling