Quickstart
Install
Section titled “Install”npm install -g @muthuishere/windowctlnpm resolves one platform sub-package (@muthuishere/windowctl-darwin-arm64 and
friends) and execs the native binary. There is no postinstall script and no
download step at install time — the binary is in the package.
Other routes:
go install github.com/muthuishere/windowctl/cmd/windowctl@latest # Go# or grab a binary from GitHub ReleasesmacOS: grant Accessibility once
Section titled “macOS: grant Accessibility once”Listing windows needs nothing. Moving, resizing or focusing them needs the Accessibility permission, because that is the API doing the work.
windowctl permissions # opens the system promptwindowctl permissions --status # script-friendly; never promptsGrant it to the app that runs windowctl — your terminal, or your agent’s host process. If it is denied you get a descriptive error, not a silent no-op.
Move something
Section titled “Move something”windowctl windows list # what is openwindowctl move --app "Google Chrome" --zone 1A # left halfwindowctl move --title "Terminal" --zone 1B # right half--app is a case-insensitive exact match on the OS-reported name (VS Code
reports Code, Chrome reports Google Chrome). --title is a case-insensitive
substring. When several windows match, the first is used — so list before
you move if you are not sure.
Then keep going
Section titled “Then keep going”- Zones & splits — the rectangle vocabulary
- Layouts in one call — apply a whole desk arrangement
- Agent skill — drive it in plain English