TIL - Running yabai as a persistent tiling window manager on macOS without Homebrew services

yabai #macos #til #productivity

TL;DR

  • Homebrew removed the plist from the yabai formula.
  • brew services start yabai no longer works — #plist, #service not found.

Solution: Use a custom LaunchAgent

  • Create LaunchAgents folder if it doesn’t exist:
mkdir -p ~/Library/LaunchAgents
  • Create a plist file ~/Library/LaunchAgents/com.yabai.yabai.plist:
<?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.yabai.yabai</string>

    <key>ProgramArguments</key>
    <array>
      <string>/opt/homebrew/bin/yabai</string>
      <string>--start-service</string>
    </array>

    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
  </dict>
</plist>
  • Load the agent:
launchctl load ~/Library/LaunchAgents/com.yabai.yabai.plist
  • Verify yabai is running:
yabai -m query --windows

Notes

  • Adjust /opt/homebrew/bin/yabai if Homebrew is installed elsewhere.

  • This makes yabai start automatically at login and persist without relying on terminal sessions.

  • Works on macOS 13+ without disabling SIP.