Add twelfths (3x4) and sixteenths (4x4) grid positions#1720
Add twelfths (3x4) and sixteenths (4x4) grid positions#1720MyronKoch wants to merge 8 commits intorxhanson:mainfrom
Conversation
Move thirds (First Third through Last Two Thirds) and size actions (Almost Maximize, Maximize Height, Larger, Smaller) into their own submenus in the menu bar dropdown, matching the existing pattern used by fourths, sixths, eighths, and move actions. Also removes the conditional hiding of the eighths submenu, making it always visible like all other grid categories. This reduces menu clutter for users with many grid sizes enabled, particularly on large displays and multi-monitor setups. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 28 new window positions for fine-grained window management on large displays. Users with 4K TVs (50"+), ultrawide monitors, or multi-monitor arrays need more granular positioning than halves, thirds, fourths, sixths, and eighths provide. Twelfths divide the screen into a 3-row by 4-column grid (12 positions). Sixteenths divide the screen into a 4-row by 4-column grid (16 positions). Each grid size includes: - Window calculations with orientation-aware layout - Cycling through positions on repeated shortcut presses - Drag-to-snap support - Gap-aware edge positioning - Template images for menu and settings display - Settings panel with shortcut configuration for all positions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add largerWidth, smallerWidth, largerHeight, smallerHeight to the .size category so all size-related actions appear in the Size submenu - Remove dead eighthsMenuItem property from AppDelegate (no longer assigned after removing the conditional hiding logic) - Remove dead reference in SettingsViewController toggle handler Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Portrait mode for twelfths transposes the 4x3 landscape grid to a 3x4 portrait grid using row-major index remapping. The previous code naively mapped landscape column positions to portrait columns, causing 3 pairs of overlapping positions and one empty row. Fixed 8 of 12 portraitRect methods with correct row/column assignments. Also standardize 4 abbreviated sixteenth display names to use the full form consistent with all other positions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Thanks for looking to contribute to Rectangle. Rectangle's Shortcuts tab is a bit limited by design, as the intent is to keep the app more approachable. More recently I've designated the "overflow" area for new sizes/positions to the popover shown by the ellipsis button on at the bottom of the General tab. That provides a middle ground where the simple aesthetic is preserved but the community has the ability to add more to the app as desired. I'm good with merging in more sizes/positions, but when added to the UI it has to still be done in a way that is visually acceptable in the popover. In this case, some options would be adding in more columns or converting the existing settings in that popover into a table view that can scroll. If that's not desirable, another option is to leave all of the additions out of the UI and keep them as Terminal command configurations only at this time. Let me know if you have any questions. |
Per maintainer feedback, move twelfths/sixteenths shortcuts from the Shortcuts tab into the ellipsis popover on the General tab. Instead of 28 individual rows, use one cycling shortcut per grid size that cycles through all positions on repeated presses via the existing *Repeated protocols. Restore PrefsViewController to upstream state. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add useCyclingShortcuts BoolDefault (default false) to Defaults.swift - Add 12 individual twelfths rows and 16 individual sixteenths rows to the General tab extra settings popover, following the exact eighths pattern - Add "Use cycling shortcuts" checkbox at top of Grid Positions section - When cycling mode is on, hide individual rows and show one cycling shortcut per category (Eighths, Twelfths, Sixteenths); cycling hint text visible only in cycling mode - When cycling mode is off (default), show all individual position rows and hide cycling rows - Use objc associated objects to wire checkbox to row visibility toggle
|
Thanks for the update. I pulled your changes, and now looking at this cohesively as this one pull request I have clarity on criteria for getting this into a mergeable state:
I think this gives us the benefit of the additional sizes with a reasonable menu, without adding too much complexity to the popover, and it preserves the existing simplicity for users that don't have large screens. Let me know if anything's unclear here. |
# Conflicts: # Rectangle/WindowAction.swift
…dback - Replace "Show Eighths in Menu" with "Show additional sizes in menu" checkbox that shows 8ths, 9ths, 12ths, 16ths submenus and converts Thirds & Size into submenus when enabled - Remove "Use cycling shortcuts" checkbox and individual twelfths/ sixteenths rows (-454 lines); keep only cycling shortcut recorders for Ninths (3x3), Twelfths (4x3), Sixteenths (4x4) - Add ninths category to WindowActionCategory for menu grouping - Remove useCyclingShortcuts preference (no longer needed) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Thanks for the clear guidance - this is much cleaner. Changes made: Popover (General tab > ellipsis):
Menu checkbox:
Cleanup:
If this looks right I can close #1721 since its changes are incorporated here. |

Summary
OrientationAwaresupport and bidirectional cycling viaTwelfthsRepeated/SixteenthsRepeatedprotocols.twelfthsand.sixteenthscategories toWindowActionCategoryMotivation
These finer grid positions are especially useful for users with large or ultra-high-resolution displays - 50" 4K TVs used as monitors, ultrawide displays, or multi-monitor arrays - where halves, thirds, and quarters leave too much unused screen real estate. A 4x4 grid on a 50" 4K display gives each tile roughly the usable area of a 720p laptop screen, which is ideal for tiling many windows simultaneously.
Changes
WindowAction.swift- 28 new enum cases (raw values 80-119), withname,displayName,image,category,gapsApplicable,alternateDefault,SubWindowAction, andgapSharedEdgeentriesWindowActionCategory.swift-.twelfthsand.sixteenthscasesWindowCalculation.swift- 28 factory instances andcalculationsByActionentries*Calculation.swiftfiles (one per position)TwelfthsRepeated.swiftandSixteenthsRepeated.swift- cycling protocolsAssets.xcassets/WindowPositions/PrefsViewController.swift- shortcut views for twelfths and sixteenths categoriesproject.pbxproj- build file references for all new filesTest plan
🤖 Generated with Claude Code