Skip to content
Back to skills

Rectangle

ASecurity

Configure Rectangle window shortcuts and multi-display layouts; troubleshoot macOS Accessibility permissions and URL actions.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 22, 2026
ai-agentspythonrustgoswiftshellbashnodeapisecurity

Works with

  • cursor
  • terminal
  • cli
  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned October 22, 2026

npx -y skills add alivirgo/Major-AI-Skills --skill rectangle --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Rectangle?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Rectangle
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alivirgo-rectangle/badge)](https://www.skillsdirectory.com/skills/alivirgo-rectangle)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: rectangle
description: "Configure Rectangle window shortcuts and multi-display layouts; troubleshoot macOS Accessibility permissions and URL actions."
category: macos
risk: safe
source: self
source_type: self
date_added: "2026-08-26"
tags: ["rectangle", "macos-window-manager", "axuielement", "accessibility-api", "window-tiling", "url-scheme", "claude"]
tools: ["claude", "cursor", "gemini", "codex"]
---

# Rectangle macOS Window Manager AI Skill Guide (Claude)

## Overview & Engine Architecture
Rectangle is an open-source macOS window management utility engineered in Swift and AppKit. It manipulates third-party application window bounds without window-server hacks by leveraging the **macOS Accessibility API (`AXUIElement`)**, querying screen geometries via **`NSScreen.visibleFrame`** (which accounts for the macOS Menu Bar and Dock), and listening for hotkeys via **`MASShortcut`**. Rectangle supports keyboard shortcuts, drag-to-edge cursor snapping, multi-display window cycling, customizable margin gaps, and external automation via the **`rectangle://` URL scheme**. Claude operates as a Principal macOS Systems Engineer and Window Management Architect, specializing in **Accessibility `AXUIElement` window manipulation**, **multi-monitor coordinate mapping**, **TCC permission lifecycle troubleshooting**, and **Rectangle URL scheme scripting**.

### Rectangle Window Server & Accessibility Architecture

```
┌─────────────────────────────────────────────────────────────┐
│                 Rectangle Engine Architecture               │
│                                                             │
│  Input & Trigger Subsystem                                  │
│  ├── Global Hotkey Listener (`MASShortcut` / Carbon Events) │
│  ├── Drag-to-Edge Cursor Tracker (`NSEvent` Global Monitor) │
│  └── URL Scheme Action Dispatcher (`rectangle://execute...`)│
│                                                             │
│  Geometry Calculation & Coordinate Engine                   │
│  ├── `NSScreen.visibleFrame` (Menu Bar & Dock Offset Math)  │
│  ├── Multi-Display Topology Resolver (Display ID Offsets)   │
│  └── Window Padding / Margin Gap Subtractor                 │
│                                                             │
│  macOS Accessibility Manipulation Tier                      │
│  ├── Target App Accessibility Node (`AXUIElement`)          │
│  ├── Set Window Position (`kAXPositionAttribute`)           │
│  └── Set Window Dimensions (`kAXSizeAttribute`)             │
└─────────────────────────────────────────────────────────────┘
```

---

## Operational Capabilities & Agent Directives

1. **Rectangle URL Scheme Automation**: Construct terminal and Python automation scripts dispatching commands via `open "rectangle://execute-action?name=<action>"` (*e.g. `left-half`, `right-half`, `maximize`, `first-third`*).
2. **Native `AXUIElement` Window Manipulation**: Author standalone Swift scripts demonstrating direct manipulation of `kAXPositionAttribute` and `kAXSizeAttribute` on running application processes.
3. **Multi-Display Coordinate Triage**: Troubleshoot window jumping and misalignment across mixed DPI Retina and external displays by calculating relative `NSScreen` frame bounds.
4. **TCC Accessibility Permissions Recovery**: Remediate non-responsive shortcuts using `tccutil reset Accessibility com.knollsoft.Rectangle` and system permission verification.

---

## Production Swift Automation: Standalone Native Window Snapper (`AXUIElement`)

Save this file as `snap_window.swift` and execute via `swift snap_window.swift left`:

```swift
// ==============================================================================
// Standalone Swift 5.x Script: Native macOS Window Snapper (AXUIElement)
// Tiles the frontmost application window to Left or Right half without dependencies.
// ==============================================================================
import Cocoa

guard CommandLine.arguments.count > 1 else {
    print("Usage: swift snap_window.swift <left|right|maximize>")
    exit(1)
}

let action = CommandLine.arguments[1].lowercased()

// 1. Verify Accessibility Permissions
guard AXIsProcessTrusted() else {
    print("🚨 Error: Accessibility permissions not granted. Enable Terminal in System Settings -> Accessibility.")
    exit(1)
}

// 2. Get Frontmost Application Process
guard let frontApp = NSWorkspace.shared.frontmostApplication else {
    print("Error: No frontmost application detected.")
    exit(1)
}

let appElement = AXUIElementCreateApplication(frontApp.processIdentifier)
var focusedWindow: AnyObject?
let result = AXUIElementCopyAttributeValue(appElement, kAXFocusedWindowAttribute as CFString, &focusedWindow)

guard result == .success, let window = focusedWindow else {
    print("Error: Could not access focused window on \(frontApp.localizedName ?? "App").")
    exit(1)
}

let windowElement = window as! AXUIElement

// 3. Calculate Target Screen Bounds (Excluding Menu Bar & Dock)
guard let screen = NSScreen.main else {
    print("Error: Main display not detected.")
    exit(1)
}

let visibleFrame = screen.visibleFrame
let screenHeight = screen.frame.height

var targetX: CGFloat = visibleFrame.origin.x
var targetY: CGFloat = screenHeight - visibleFrame.origin.y - visibleFrame.height
var targetW: CGFloat = visibleFrame.width
var targetH: CGFloat = visibleFrame.height

if action == "left" {
    targetW = visibleFrame.width / 2.0
} else if action == "right" {
    targetX = visibleFrame.origin.x + (visibleFrame.width / 2.0)
    targetW = visibleFrame.width / 2.0
} else if action != "maximize" {
    print("Invalid action. Use 'left', 'right', or 'maximize'.")
    exit(1)
}

// 4. Apply Position and Size via Accessibility API
var newPoint = CGPoint(x: targetX, y: targetY)
var newSize = CGSize(width: targetW, height: targetH)

let posValue = AXValueCreate(.cgPoint, &newPoint)!
let sizeValue = AXValueCreate(.cgSize, &newSize)!

AXUIElementSetAttributeValue(windowElement, kAXPositionAttribute as CFString, posValue)
AXUIElementSetAttributeValue(windowElement, kAXSizeAttribute as CFString, sizeValue)

print("✅ Snapped \(frontApp.localizedName ?? "Window") to '\(action)'.")
```

---

## Technical Troubleshooting Matrix

| Issue & Failure Signature | Root Cause Analysis | Diagnostic & Resolution Pathway |
| :--- | :--- | :--- |
| **Shortcuts Stop Working / Window Refuses to Move** | macOS Accessibility permission revoked after an application update. | 1. In Terminal, run: `tccutil reset Accessibility com.knollsoft.Rectangle`.<br>2. Open *System Settings $\rightarrow$ Privacy & Security $\rightarrow$ Accessibility*.<br>3. Toggle **Rectangle** ON. |
| **Window Snaps to Wrong Display in Multi-Monitor Setup** | "Displays have separate Spaces" setting disabled, confusing `NSScreen` frame origins. | In System Settings $\rightarrow$ *Desktop & Dock*, check **Displays have separate Spaces**, then log out and log back in. |
| **Unwanted Gaps Around Snapped Windows** | Window Margin / Gap Size setting configured in Rectangle preferences. | In Rectangle Preferences $\rightarrow$ **Settings**, set **Gap size** to `0px`. |
| **Certain Windows (Calculator, System Settings) Won't Resize** | Target application window has fixed minimum/maximum constraints in AppKit (`NSWindow.minSize == NSWindow.maxSize`). | This is expected macOS behavior; fixed-dimension utility panels cannot be resized. |

---

## Command Line Syntax & URL Scheme Actions

```bash
# 1. Tile Frontmost Window to Left Half via Rectangle URL Scheme
open -g "rectangle://execute-action?name=left-half"

# 2. Tile Frontmost Window to Right Half
open -g "rectangle://execute-action?name=right-half"

# 3. Maximize Frontmost Window
open -g "rectangle://execute-action?name=maximize"

# 4. Reset Rectangle Accessibility Permissions via CLI
tccutil reset Accessibility com.knollsoft.Rectangle
```

### Essential File Locations
- **Preferences Plist**: `~/Library/Preferences/com.knollsoft.Rectangle.plist`
- **Application Binary**: `/Applications/Rectangle.app`

---

## Agent Operational Directive
> **MANDATORY**: When triggering Rectangle actions via shell scripts, always use the `-g` (background) flag with `open "rectangle://execute-action?name=..."` to avoid stealing focus from the active window being tiled.

Files in this skill

  • SKILL.md8.5 KB
  • gemini.md6.4 KB
  • gpt.md6.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.