Skip to content

Conversation

@lcestou
Copy link

@lcestou lcestou commented Oct 2, 2025

Summary

This PR adds two major enhancements to the Fancy Tiles layout system:

  1. Zone Numbering with Live Dimensions: Each zone now displays its number and current dimensions (width × height) in the center with text shadows for better readability, especially on 4K displays.

  2. Multi-Zone Window Spanning: Windows can now span across multiple adjacent regions. When dragging near the edge between adjacent zones, both zones are highlighted and the window snaps to the combined area.

Changes

  • Added zone counter and dimension display with dynamic font scaling
  • Implemented text shadows for improved visibility
  • Added findNodesNearPosition() method to detect nearby zones
  • Added areNodesAdjacent() method to validate zone adjacency
  • Enhanced snapping logic to support multiple destination zones
  • Combined rectangle calculation for multi-zone spanning
  • Fixed minor typos in README ("mose" → "mouse", "by" → "with")

Testing

  • Zone numbers display correctly with live dimension updates
  • Multi-zone spanning works for horizontally and vertically adjacent zones
  • Text remains readable across different zone sizes and display resolutions

Use Case

This is particularly useful for ultrawide monitors or multi-monitor setups where users may want windows to span across logical regions (e.g., a code editor spanning 2/3 of the screen).

lutechi and others added 3 commits October 1, 2025 21:30
Shows the gap size alongside zone dimensions in the layout editor overlay.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@BasGeertsema
Copy link
Owner

Thanks @lcestou for your PR! Lot of great improvements. As you have already noticed PR #17 also adds multispan support, albeit in a different way. The Windows Fancy Zones actually supports both methods: merging with a keyboard modifier (the other PR) and merging when hovering over the shared zone as in this PR. Both approaches have pros and cons and I would like to offer both methods, but configurable in the settings. I have to make choice here, so I will expand the first PR (#17) to include the multi-span behaviour exhibited here, as that PR will be more focused on the multi-zone spanning.

Furthermore, I really like the dimensions (width x height) and gap shown within the regions. I would say this information is only relevant during the grid setup, and not when snapping so my proposal would be to only show it within the grid editor, and not when snapping windows. Also, it breaks the short-cut dialog ( or in the grid editor) so it should not be shown there as well.

I am not sure what the benefits of numbering the region are. The digits 1-8 are already reserved for layout presets. By showing the numbers in each region it conflicts with that feature and is confusing.

So what I want to do is:

What are your thoughts on this?

@lcestou
Copy link
Author

lcestou commented Oct 6, 2025

Thanks for the feedback and for merging!

I agree with your approach:

Multi-zone spanning: Great that it's consolidated into PR #17 with both methods. Having both options configurable is ideal.

Live dimensions: Good call to only show them in the grid editor and not during snapping. Keeping it simple makes sense.

Zone numbering: The reason I added numbers was to enable keyboard-triggered snapping. My goal was to let users press a trugger key (like Alt, Ctrl or Super) + a number (1-9 on the top row) while dragging to quickly snap to that zone without needing to drag all the way to it. Think of it like "drag window + hold modifier + press 3 = snap to zone 3". This would speed up the workflow significantly for power users.

I understand the conflict with layout presets using 1-8. Maybe this could work as an optional feature with a different modifier key, or perhaps using a different key row? Just wanted to explain the thinking behind it, but happy to defer to your vision for the extension.

Thanks again for your work on this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants