diff --git a/README.md b/README.md index 698db93..c3503a7 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,13 @@ A window tiling manager extension for Linux Mint's Cinnamon Desktop, inspired by ## Features +- **Split-Based Zone Editor**: Create layouts by splitting zones horizontally or vertically - intuitive tiling interface! +- **Multi-Monitor Support**: Independent zone configurations for each monitor - **Multiple Zone Layouts**: Pre-configured layouts including 2x2 grid, 3 columns, and focus layouts -- **Graphical Zone Editor**: Draw custom zones visually with your mouse - no code editing required! +- **Real-Time Dimensions**: See pixel and percentage dimensions in each zone - **Visual Overlay**: See your zones while dragging windows (hold Shift) - **Keyboard Shortcuts**: Quick snap to zones using hotkeys -- **Layout Cycling**: Switch between different zone layouts on the fly +- **Persistent Storage**: Custom layouts saved per-monitor with automatic migration ## Installation @@ -28,29 +30,41 @@ A window tiling manager extension for Linux Mint's Cinnamon Desktop, inspired by ### Keyboard Shortcuts +**Global Shortcuts:** - **Super + Z**: Toggle zone overlay (show/hide zones) - **Super + Shift + Z**: Cycle through different layouts -- **Super + Shift + E**: Open graphical zone editor +- **Super + Shift + E**: Open zone editor - **Super + Ctrl + 1-9**: Snap focused window to zone 1-9 +**Zone Editor Shortcuts:** +- **H**: Split selected zone horizontally (creates top/bottom) +- **V**: Split selected zone vertically (creates left/right) +- **Delete**: Remove selected zone +- **Ctrl + S**: Save layout +- **Escape**: Cancel and close editor + ### Mouse Usage 1. Hold **Shift** while dragging a window to see the zone overlay 2. Drop the window over a zone to snap it there 3. Release Shift or move outside zones to cancel -### Graphical Zone Editor +### Split-Based Zone Editor -Create custom layouts visually by drawing zones with your mouse: +Create custom layouts by progressively splitting zones: 1. Press **Super + Shift + E** to open the zone editor -2. **Click and drag** to draw rectangular zones -3. Draw as many zones as you need -4. **Ctrl + S** to save your custom layout -5. **Ctrl + C** or **Escape** to cancel -6. **Delete/Backspace** to remove the last zone +2. Select which monitor to edit (if you have multiple monitors) +3. Choose to create a new layout or edit an existing one +4. Editor starts with **one full-screen zone** (highlighted in yellow) +5. **Click** a zone to select it +6. Press **H** to split horizontally (top/bottom) or **V** to split vertically (left/right) +7. **Drag dividers** between zones to adjust their positions +8. Press **Delete** to remove the selected zone +9. **Ctrl + S** to save your custom layout +10. **Escape** to cancel -Your custom layout will be added to the layout rotation and can be accessed with Super + Shift + Z. +Each zone displays its dimensions in pixels and percentages in real-time. Your custom layout will be saved per-monitor and can be accessed with Super + Shift + Z. ## Available Layouts @@ -60,12 +74,14 @@ Your custom layout will be added to the layout rotation and can be accessed with ## Customization -### Easy Way: Use the Graphical Editor +### Easy Way: Use the Split-Based Editor 1. Press **Super + Shift + E** to open the zone editor -2. Draw zones by clicking and dragging -3. Press **Ctrl + S** to save your custom layout -4. Your layout is immediately available in the layout rotation! +2. Select your monitor (if you have multiple) +3. Split zones using **H** (horizontal) and **V** (vertical) +4. Adjust dividers by dragging them +5. Press **Ctrl + S** to save your custom layout +6. Your layout is immediately available and saved per-monitor! ### Advanced Way: Edit the Code @@ -89,6 +105,22 @@ Zone coordinates are relative (0.0 to 1.0): - `width`: Zone width as fraction of screen width - `height`: Zone height as fraction of screen height +## Multi-Monitor Support + +GridSnap fully supports multiple monitors with independent configurations: + +- **Per-Monitor Layouts**: Each monitor can have its own set of custom layouts +- **Monitor Selector**: Choose which monitor to edit when opening the zone editor +- **Automatic Detection**: Window snapping automatically uses the correct monitor's zones +- **Keyboard Shortcuts**: Work on any monitor - snaps to zones on the monitor where the window is located +- **Settings Panel**: Manage layouts per-monitor with a dropdown selector +- **Storage Migration**: Existing layouts automatically migrate to the primary monitor + +When you open the zone editor, you'll be prompted to select which monitor to configure. Each monitor maintains its own: +- Current active layout +- Custom layouts +- Zone configurations + ## Troubleshooting ### Extension won't load @@ -132,21 +164,24 @@ tail -f ~/.cinnamon/glass.log ## Future Enhancements - [x] Custom layout editor GUI -- [ ] Per-monitor zone configurations -- [ ] Save custom layouts permanently to file -- [ ] Edit existing custom layouts in the graphical editor +- [x] Per-monitor zone configurations +- [x] Save custom layouts permanently to file +- [x] Edit existing custom layouts in the graphical editor +- [x] Animation effects +- [x] Settings panel (zone appearance, toggles, layout management) - [ ] Zone layout import/export - [ ] More pre-configured layouts -- [ ] Animation effects -- [ ] Settings panel for keybinding customization +- [ ] High-DPI display support +- [ ] Keybinding customization in settings panel ## Contributing Feel free to fork and submit pull requests! Areas that could use help: - Additional layout presets -- UI improvements for the overlay -- Settings GUI implementation -- Multi-monitor support improvements +- High-DPI display support and testing +- Zone layout import/export functionality +- UI improvements and animations +- Performance optimizations ## License