Managing window size and position in macOS
ShiftIt is an application for macOS that allows you to quickly manipulate window position and size using keyboard shortcuts. It is a full featured window organizer for macOS.
This is a modernized fork of the original ShiftIt by Filip Krikava, updated with:
- Sparkle 2.8 for secure auto-updates (EdDSA signing)
- Swift 6 modernization
- macOS 14.6+ (Sonoma) support
- Ultrawide monitor support - divide screen by 3 or 6
- Modern keyboard shortcut recording
License: GNU General Public License v3
A binary build for macOS 14.6+ is available in releases.
- macOS 14.6 (Sonoma) or later
- Apple Silicon or Intel Mac
- Download the latest release from the releases page
- Unzip and drag ShiftIt.app to your Applications folder
- On first launch, right-click the app and select "Open" to bypass Gatekeeper
- Grant Accessibility permissions when prompted (required for window management)
ShiftIt installs itself in the menu bar (optionally it can be completely hidden). It provides a set of actions that manipulate window positions and sizes.
| Action | Default Shortcut | Description |
|---|---|---|
| Left | ⌃⌥⌘ ← | Move window to left half |
| Right | ⌃⌥⌘ → | Move window to right half |
| Top | ⌃⌥⌘ ↑ | Move window to top half |
| Bottom | ⌃⌥⌘ ↓ | Move window to bottom half |
| Top Left | ⌃⌥⌘ 1 | Move window to top-left quarter |
| Top Right | ⌃⌥⌘ 2 | Move window to top-right quarter |
| Bottom Left | ⌃⌥⌘ 3 | Move window to bottom-left quarter |
| Bottom Right | ⌃⌥⌘ 4 | Move window to bottom-right quarter |
| Maximize | ⌃⌥⌘ M | Maximize window |
| Center | ⌃⌥⌘ C | Center window |
| Full Screen | ⌃⌥⌘ F | Toggle full screen |
ShiftIt includes special actions for ultrawide monitors:
- Divide by 3 - Split screen into thirds
- Divide by 6 - Split screen into sixths
If this feature is on, snapping to the left side of the screen (and top, bottom, and right sides) will resize the window to half of the screen. If the window is then snapped to the same side of the screen, it will resize to one third of the screen, and then two thirds of the screen.
To turn the feature on:
defaults write org.shiftitapp.ShiftIt multipleActionsCycleWindowSizes YESTo turn it off:
defaults write org.shiftitapp.ShiftIt multipleActionsCycleWindowSizes NOLaunch the application again. It will open the preference dialog.
Make sure ShiftIt has Accessibility permissions. Go to System Settings → Privacy & Security → Accessibility and ensure ShiftIt is enabled.
Go to System Settings → Privacy & Security → Accessibility, find ShiftIt in the list, and toggle it off then on again. If ShiftIt is not in the list, click the + button and add it from your Applications folder.
To build ShiftIt locally, clone the repository and run:
cd ShiftIt
xcodebuild -target ShiftIt -configuration ReleaseThe built app will be at ShiftIt/build/Release/ShiftIt.app.
A release script is provided that handles building, signing, and updating the appcast:
./release/build-release.shThis script will:
- Build ShiftIt in Release configuration
- Create a zip archive
- Sign with EdDSA (reads key from macOS Keychain)
- Update
release/appcast.xmlwith the signature and file size
- EdDSA signing key in macOS Keychain (generated with Sparkle's
generate_keystool) - Xcode command line tools
If using the legacy fabric-based release system:
export SHIFTIT_GITHUB_USER=citadelgrad
export SHIFTIT_GITHUB_REPO=ShiftIt
export SHIFTIT_GITHUB_TOKEN=~/.shiftit/github.token # your personal access tokenShiftIt/
├── ShiftIt/ # Main application source
│ ├── ShiftIt.xcodeproj # Xcode project
│ ├── bin/ # Sparkle signing tools
│ └── Sparkle.framework/ # Auto-update framework
├── release/ # Release assets
│ ├── appcast.xml # Sparkle update feed
│ ├── release-notes-*.html
│ └── build-release.sh # Release build script
└── artwork/ # Icons and graphics
- Original ShiftIt by Aravindkumar Rajendiran
- Rewritten by Filip Krikava
- Modernized by citadelgrad
If you prefer a more customizable solution, consider Hammerspoon with the ShiftIt Spoon.

