@@ -1,64 +0,0 @@ |
| 1 | -# Multi-Monitor Test Plan | | |
| 2 | - | | |
| 3 | -Connect an external monitor, delete `~/.config/tarmac/init.lua` to regenerate defaults, then run `RUST_LOG=tarmac=info cargo run -p tarmac`. | | |
| 4 | - | | |
| 5 | -## Startup Verification | | |
| 6 | - | | |
| 7 | -- [ ] Log shows `displays discovered count=2` | | |
| 8 | -- [ ] Log shows workspace 1 assigned to primary, workspace 2 to secondary | | |
| 9 | -- [ ] Primary monitor tiles existing windows on workspace 1 | | |
| 10 | -- [ ] Secondary monitor shows workspace 2 (empty or with any windows that were there) | | |
| 11 | - | | |
| 12 | -## Monitor Focus (Cmd+Comma / Cmd+Period) | | |
| 13 | - | | |
| 14 | -- [ ] `Cmd+Period` focuses the next monitor (cursor warps, keyboard focus changes) | | |
| 15 | -- [ ] `Cmd+Comma` focuses the previous monitor | | |
| 16 | -- [ ] Focus cycling wraps around (2 monitors: next from second goes back to first) | | |
| 17 | -- [ ] Status in `tarmacctl get-workspaces` reflects correct active workspace per monitor | | |
| 18 | - | | |
| 19 | -## Workspace Switching Per-Monitor | | |
| 20 | - | | |
| 21 | -- [ ] On primary: `Cmd+3` switches primary to workspace 3 (secondary stays on ws2) | | |
| 22 | -- [ ] On secondary: `Cmd+4` switches secondary to workspace 4 (primary stays on ws1) | | |
| 23 | -- [ ] **Swap test**: Primary on ws1, secondary on ws2. Focus primary, press `Cmd+2` → workspaces swap (primary gets ws2, secondary gets ws1) | | |
| 24 | - | | |
| 25 | -## Move Window Between Monitors | | |
| 26 | - | | |
| 27 | -- [ ] `Cmd+Shift+Period` moves focused window to next monitor's workspace | | |
| 28 | -- [ ] `Cmd+Shift+Comma` moves focused window to previous monitor's workspace | | |
| 29 | -- [ ] Layout recalculates on both monitors after move | | |
| 30 | -- [ ] Focus follows the moved window to the target monitor | | |
| 31 | - | | |
| 32 | -## Cross-Monitor Directional Navigation | | |
| 33 | - | | |
| 34 | -- [ ] With windows on both monitors: `Cmd+L` at the right edge of left monitor → focus crosses to right monitor | | |
| 35 | -- [ ] `Cmd+H` at the left edge of right monitor → focus crosses to left monitor | | |
| 36 | -- [ ] Up/Down navigation stays within the current monitor | | |
| 37 | - | | |
| 38 | -## Window Rules with Monitors | | |
| 39 | - | | |
| 40 | -- [ ] `gar.rule({ app_name = "Safari" }, { workspace = 2 })` sends Safari to monitor 2's workspace | | |
| 41 | - | | |
| 42 | -## Spawn Terminal | | |
| 43 | - | | |
| 44 | -- [ ] `Cmd+Return` spawns terminal on the currently focused monitor | | |
| 45 | -- [ ] New window tiles on the focused monitor's workspace, not the other monitor | | |
| 46 | - | | |
| 47 | -## Display Hotplug | | |
| 48 | - | | |
| 49 | -- [ ] Disconnect external monitor → windows from secondary workspace move to primary | | |
| 50 | -- [ ] Reconnect external monitor → workspace 2 assigned to it, windows restored | | |
| 51 | -- [ ] No crash on connect/disconnect | | |
| 52 | - | | |
| 53 | -## Gaps and Layout | | |
| 54 | - | | |
| 55 | -- [ ] Each monitor respects its own usable frame (dock/menu bar position) | | |
| 56 | -- [ ] Gaps apply correctly on both monitors independently | | |
| 57 | -- [ ] Smart splits work correctly on both monitors (respecting each monitor's aspect ratio) | | |
| 58 | - | | |
| 59 | -## Edge Cases | | |
| 60 | - | | |
| 61 | -- [ ] Single monitor (no external): everything works as before, no regression | | |
| 62 | -- [ ] Three monitors: workspaces 1-3 assigned, all navigation works | | |
| 63 | -- [ ] Rapidly switching monitors with `Cmd+Comma/Period` → no crash | | |
| 64 | -- [ ] Floating window on one monitor, tiled on another → floating stays on its monitor | | |