Overview
Loop’s keyboard shortcut system allows you to assign any key combination (using the trigger key) to initiate window manipulation actions. This provides a fast, precise alternative to the radial menu for users who prefer keyboard-driven workflows.How Keyboard Shortcuts Work
Loop uses a trigger key system. The trigger key acts as a modifier that must be held (or pressed) in combination with other keys to activate window actions.Basic Workflow
Set your trigger key
Configure your trigger key in Settings > Keybinds (e.g., Control, Option, or Caps Lock)
To use Caps Lock as your trigger key, you’ll need to remap it to Control in System Settings > Keyboard > Modifier Keys, then select Right Control in Loop.
Available Actions
Loop provides an extensive collection of window actions organized by category:General
Fullscreen
Enter native macOS fullscreen mode
Maximize
Fill the entire screen (without fullscreen mode)
Almost Maximize
Maximize with a small margin around edges
Centre
Center the window on screen
MacOS Centre
Use macOS native window centering
Minimize
Minimize window to dock
Hide
Hide the application
Halves
Position windows to fill half of the screen:- Top Half: Upper half of screen
- Bottom Half: Lower half of screen
- Left Half: Left half of screen
- Right Half: Right half of screen
Quarters
Position windows in screen corners:- Top Left Quarter
- Top Right Quarter
- Bottom Left Quarter
- Bottom Right Quarter
Thirds
Horizontal Thirds:- Left Third, Left Two Thirds
- Horizontal Center Third
- Right Third, Right Two Thirds
- Top Third, Top Two Thirds
- Vertical Center Third
- Bottom Third, Bottom Two Thirds
Screen Switching
Move windows between displays:- Next Screen / Previous Screen: Cycle through displays
- Left/Right/Top/Bottom Screen: Move to specific adjacent screen
Window Manipulation
Size Adjustment:- Larger, Smaller: Resize proportionally
- Scale Up, Scale Down: Alternative sizing methods
- Shrink Top, Bottom, Right, Left
- Shrink Horizontal, Shrink Vertical
- Grow Top, Bottom, Right, Left
- Grow Horizontal, Grow Vertical
- Move Up, Down, Right, Left
Special Actions
- Initial Frame: Restore window to its original position
- Undo: Revert to previous window state
- Custom: Create custom window sizes and positions
- Cycle: Define action sequences (see Cycles)
Configuration
Adding Keybinds
Navigate to Settings > Keybinds and follow these steps:Record your shortcut
Click the keybind field and press your desired key (the trigger key is automatically included)
Trigger Key Options
The base modifier key(s) that activate Loop. Can be a single key or combination.
When enabled, Left Control and Right Control are treated as distinct trigger keys.
Delay before Loop activates (0-1 seconds). Useful to avoid accidental triggers.
Require double-tapping the trigger key to activate Loop.
Use middle mouse button to trigger Loop.
Implementation Details
Keyboard shortcuts are monitored by theKeybindTrigger class using an active event monitor:
Loop/Core/Observers/KeybindTrigger.swift
Keybind Resolution
Loop uses a multi-tier keybind resolution system:Event Handling
The keybind system intelligently handles edge cases:Bypassing the Trigger Key
Some actions can be configured to bypass the trigger key requirement:Repeatable Actions
Certain actions automatically repeat when you hold down the keys:- Window resizing (grow, shrink, larger, smaller)
- Window movement (move up, down, left, right)
- Focus switching
- Undo
URL Scheme Integration
You can trigger Loop actions programmatically using URL schemes:Shell Commands
AppleScript
Best Practices
Choose memorable keybinds
Choose memorable keybinds
Use mnemonic associations: H for left Half, L for right (like vim), M for Maximize, etc.
Avoid conflicts
Avoid conflicts
Don’t override important system shortcuts or application-specific commands.
Start simple
Start simple
Begin with a few essential shortcuts (halves, maximize, center) and expand gradually.
Use cycles for variations
Use cycles for variations
Instead of memorizing many shortcuts, use cycles to group related actions under one keybind.