@@ -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 |