Skip to content

Releases: yashas-salankimatt/MacTile

v1.5.0 - Snappy Window Positioning

Choose a tag to compare

@yashas-salankimatt yashas-salankimatt released this 11 Mar 21:01

What's New

Snappy Window Positioning (AeroSpace-inspired)

MacTile now uses techniques from AeroSpace for significantly faster window tiling:

  • Animation disabling: Temporarily disables AXEnhancedUserInterface during frame changes to suppress macOS window animations — windows now snap into place instantly
  • Size→Position→Size ordering: Uses AeroSpace's proven attribute-setting order to handle macOS AX quirks in a single pass, replacing the previous multi-step safe-zone strategy
  • Zero-delay fire-and-forget: Removed all synchronous delays from the main positioning path — AX calls are issued back-to-back
  • Cross-monitor moves: Still shrinks windows first (to bypass browser visibility protection), then applies the fast path on the target monitor
  • Correction loop as safety net: The iterative correction loop is preserved but now only runs if the initial placement fails

Bug Fixes

  • Fixed correction loop stuck detection off-by-one
  • Correction loop now detects and bails when window closes mid-operation
  • Consistent minimum-size acceptance logic across all code paths
  • Cross-monitor shrink size uses min() to avoid temporarily growing small windows

Cleanup

  • Removed unused setSizeWithRetry, setPositionWithRetry, and axErrorString dead code

MacTile v1.4.2

Choose a tag to compare

@yashas-salankimatt yashas-salankimatt released this 26 Feb 00:04

Per-Monitor Sketchybar Auto-Adjustment

Added

  • Per-Monitor Sketchybar Auto-Adjustment: When sketchybar integration is enabled, MacTile now automatically queries sketchybar for its bar height and adjusts the overlay grid and window tiling per-monitor. Built-in displays (with notch) get minimal extra padding, while external displays get the full bar height offset — no manual inset configuration needed.

Fixed

  • Overlay Grid Respects User Insets: The overlay grid now properly accounts for user-configured insets (e.g. for custom bars), so the grid visually matches the actual tiling area instead of drawing over reserved regions
  • Overlay UI Label Positioning: Grid size indicator, monitor indicator, selection info, and help text are now positioned within the grid bounds, respecting all safe area insets
  • Negative Inset Protection: EdgeInsets now clamps all values to non-negative, preventing invalid configurations from causing windows to tile off-screen

Improved

  • Shared Sketchybar Binary Detection: Sketchybar executable path detection is now shared between the event notification system and bar info querying, eliminating duplicated code

Installation

  1. Download MacTile-1.4.2.dmg
  2. Open the DMG and drag MacTile to Applications
  3. On first launch, right-click → Open to bypass Gatekeeper (unsigned build)
  4. Grant Accessibility permissions when prompted (System Settings → Privacy & Security → Accessibility)

MacTile v1.4.1

Choose a tag to compare

@yashas-salankimatt yashas-salankimatt released this 25 Feb 21:27

What's Changed

Fixed

  • Settings Apply Performance: Settings are now saved in a single atomic update instead of 15+ individual writes, eliminating redundant hotkey re-registration and intermediate state flicker
  • Memory Leak in Preset Rows: Fixed retain cycle in tiling preset delete handler that prevented row views from being deallocated
  • Event Monitor Cleanup: Recording keyboard shortcuts in preset/focus rows now properly cancels on row deletion, reset, and window close — prevents leaked NSEvent monitors
  • Overlay Modifier Apply/Cancel Consistency: Overlay virtual space modifier changes now only persist when clicking Apply (previously saved immediately during recording)
  • Reset Confirmation Dialogs: All per-tab reset buttons now show a confirmation dialog before reverting to defaults
  • Safe Screen Access: Replaced unsafe NSScreen.screens[0] with safe .first access throughout, preventing potential crashes on headless/disconnected displays
  • Settings Corruption Alert: If stored settings fail to decode, the user now sees an alert instead of silently falling back to defaults
  • Async Window Tiling: Window frame operations in the overlay are now dispatched off the main thread, preventing brief UI freezes during tiling

Improved

  • Settings Window Layout: Removed misaligned card backgrounds from all settings tabs for a cleaner appearance
  • Spaces Tab Scrolling: Spaces tab content is now in a scroll view, ensuring all settings and usage instructions are accessible
  • Presets Tab Layout: Help text and buttons no longer overlap; coordinates field is wider to show full cycle position strings
  • Scroll View Resizing: Settings scroll views now properly resize when the window dimensions change

Installation

  1. Download MacTile-1.4.1.dmg below
  2. Open the DMG and drag MacTile.app to Applications
  3. On first launch, macOS will block the app — go to System Settings > Privacy & Security, scroll to Security, and click Open Anyway
  4. Grant Accessibility permission in System Settings > Privacy & Security > Accessibility

MacTile v1.4.0

Choose a tag to compare

@yashas-salankimatt yashas-salankimatt released this 18 Feb 18:51

Added

  • Virtual Spaces mode toggle in Settings to choose shared across monitors vs per-monitor spaces.

Changed

  • Workspace management panel trigger changed from Enter to pressing the overlay shortcut twice.
  • In shared mode, clear and rename now apply consistently across all monitor entries in the selected space number.

Fixed

  • Multi-monitor virtual space save/restore now correctly handles connected monitor sets.
  • Restoring with fewer connected monitors now restores only connected layouts while preserving disconnected monitor layouts.
  • Shared mode active-space tracking now updates all restored/saved monitor entries.

MacTile v1.3.0

Choose a tag to compare

@yashas-salankimatt yashas-salankimatt released this 16 Feb 15:37

What's New

Virtual Workspace Management Overlay

View and manage your saved virtual workspace contents directly from the overlay:

  • Press Enter without modifying the grid selection to open the management panel
  • Browse all non-empty workspaces with their saved windows listed per workspace
  • Navigate with arrow keys or vim bindings (J/K) between workspaces and individual windows
  • Remove individual windows from a workspace with Backspace/Delete or X
  • Native macOS blur panel with floating HUD appearance

Redesigned Settings Window

  • Modern dark vibrancy sidebar navigation replaces the previous tab-based layout
  • SF Symbols icons for each settings section
  • Transparent titlebar with animated sidebar highlight transitions

Bug Fixes

  • Fixed potential event monitor leaks for clear modifier and overlay save/clear modifier monitors

Installation

  1. Download MacTile-1.3.0.dmg
  2. Open the DMG and drag MacTile to Applications
  3. Launch MacTile and grant Accessibility permissions

Full Changelog: v1.2.0...v1.3.0

MacTile 1.2.0 - Sketchybar Integration

Choose a tag to compare

@yashas-salankimatt yashas-salankimatt released this 05 Feb 09:49

What's New

Sketchybar Integration

Display virtual space indicators in your menu bar with automatic setup:

  • Deploys plugin scripts, helpers, and fonts when enabled
  • Triggers mactile_space_change event for each space action
  • Bundled resources: mactile.sh, mactile_click.sh, mactile_space_name.sh, icon_map.sh
  • Automatically installs sketchybar-app-font.ttf for app icon ligatures
  • IPC support via distributed notifications for restore/clear from sketchybar

Configurable Overlay Modifiers

Separate modifier keys for save/clear in the overlay:

  • Save modifier (default: Shift) - hold while pressing number to save
  • Clear modifier (default: Control) - hold while pressing number to clear
  • Configurable in Settings → Virtual Spaces

Improvements

  • Properly stops sketchybar when integration is disabled (instead of restarting)
  • Space clear events now pass complete space information to sketchybar

Installation

  1. Download MacTile-1.2.0.dmg below
  2. Open the DMG and drag MacTile to Applications
  3. Open MacTile and grant Accessibility permissions when prompted
  4. To enable sketchybar integration, go to Settings → Virtual Spaces

See the Sketchybar Integration Guide for setup details.

MacTile 1.1.2

Choose a tag to compare

@yashas-salankimatt yashas-salankimatt released this 05 Feb 03:17

Fixed

  • Reliable Window Matching for Multi-Window Apps: Fixed virtual space restore failing for apps like Zen browser with multiple windows

    • Now uses private _AXUIElementGetWindow API for direct window ID matching
    • Falls back to frame-based heuristics when private API unavailable
    • Eliminates ambiguity when multiple windows have similar frames
  • Focus Restoration from Overlay: Fixed focus not returning correctly after save/restore

    • Save: Returns focus to the window that triggered the overlay
    • Restore: Returns focus to a window in the restored virtual space
    • Properly handles overlay dismissal timing to prevent focus race conditions

Improved

  • Window Matching Strategy: More robust multi-strategy approach
    1. Direct window ID via private API (most reliable)
    2. AXWindowNumber attributes (when exposed by apps)
    3. Frame-based matching with tolerance (fallback)
    • Only matches when confident; returns nil for safety when ambiguous

Full Changelog: v1.1.1...v1.1.2

MacTile 1.1.1

Choose a tag to compare

@yashas-salankimatt yashas-salankimatt released this 05 Feb 01:09

What's New

Added

  • Virtual Space Overlay Triggers: Save and restore virtual spaces directly from the overlay

    • Number keys (0-9) restore virtual spaces
    • Shift+number saves current windows to a virtual space
    • Auto-closes overlay after save/restore
  • Auto-Activate Matching Layouts: Virtual spaces automatically activate when window layout matches

    • Detects when you return to a saved window arrangement
    • Updates menu bar indicator without manual trigger

Fixed

  • Focus Presets for Always-Running Apps: Fixed Finder and other system apps not opening new windows when "Open if not running" is enabled
  • Virtual Space Window Restoration: Fixed full-screen windows requiring two triggers to restore
  • Virtual Space Rename: Fixed rename not persisting in release builds
  • Layout Detection Timing: Fixed layout matching requiring extra alt-tab to activate

Installation

  1. Download MacTile-1.1.1.dmg
  2. Open the DMG file
  3. Drag MacTile.app to the Applications folder
  4. Open MacTile from Applications
  5. Grant Accessibility permissions when prompted (System Settings → Privacy & Security → Accessibility)

MacTile 1.1.0

Choose a tag to compare

@yashas-salankimatt yashas-salankimatt released this 04 Feb 01:25

What's New

Virtual Spaces

Save and restore window arrangements per monitor:

  • 10 virtual spaces (0-9) per monitor for organizing different workflows
  • Save current window positions with customizable modifier keys + number
  • Restore windows to saved positions with correct z-order (stacking)
  • Rename spaces for easy identification (shown in menu bar)
  • Only saves windows that are at least 40% visible (filters hidden windows)
  • Persistent storage - spaces survive app restarts

Virtual Spaces Settings Tab

Full configuration in Settings > Spaces:

  • Enable/disable virtual spaces feature
  • Customizable save modifiers (default: Control+Option+Shift)
  • Customizable restore modifiers (default: Control+Option)
  • Record new modifiers by pressing modifier keys + Space

Default Tiling Presets

Quick window tiling without configuration:

  • R - Right side (cycles: half → third → quarter)
  • E - Left side (cycles: half → third → quarter)
  • F - Full screen
  • C - Center (cycles: third → half)
  • All presets auto-confirm and have no modifiers (work in overlay)

Per-Tab Reset Buttons

Reset individual settings tabs to defaults:

  • Each tab (General, Shortcuts, Appearance, Presets, Focus, Spaces) has its own reset button
  • Replaces the global reset button for more granular control

Bug Fixes

  • Cancel Button Now Discards Changes: Settings window properly reloads saved values when reopened after canceling
  • Event Monitor Cleanup: Recording keyboard shortcuts no longer leaks event monitors when the settings window is closed
  • Virtual Spaces Disable: Disabling virtual spaces now fully stops all background monitoring

Installation

  1. Download MacTile-1.1.0.dmg
  2. Open the DMG file
  3. Drag MacTile.app to the Applications folder
  4. Open MacTile from Applications
  5. Grant Accessibility permissions when prompted (System Settings → Privacy & Security → Accessibility)

MacTile v1.0.5

Choose a tag to compare

@yashas-salankimatt yashas-salankimatt released this 26 Jan 04:15

Bug Fix

  • Finder Window Cycling: Fixed focus preset not cycling through Finder windows
    • Finder's Desktop was being included in the window list, preventing proper cycling
    • Now filters to only include windows with a close button, excluding the Desktop
    • This fix also benefits other apps that may have similar non-standard windows

Installation

  1. Download MacTile-1.0.5.dmg below
  2. Open the DMG and drag MacTile to Applications
  3. Open MacTile and grant Accessibility permissions when prompted

See CHANGELOG.md for full details.