diff --git a/server/__tests__/tmux.test.js b/server/__tests__/tmux.test.js index 951fc23..146bcdf 100644 --- a/server/__tests__/tmux.test.js +++ b/server/__tests__/tmux.test.js @@ -47,6 +47,7 @@ describe("tmux wrapper", () => { "--model", "opus", ]); + assert.deepEqual(calls[1], ["set-option", "-t", "ccam-lane-1", "mouse", "on"]); }); it("killSession never throws when the session is already gone", () => { diff --git a/server/lib/tmux.js b/server/lib/tmux.js index 9f1336c..b6fe237 100644 --- a/server/lib/tmux.js +++ b/server/lib/tmux.js @@ -40,6 +40,11 @@ function hasSession(name) { */ function newSession({ name, cwd, argv }) { execImpl(["new-session", "-d", "-s", name, "-c", cwd, "--", ...argv]); + // Without this the pane has no scrollbar/drag scroll at all — wheel events + // just pass through to the running program instead of entering tmux's own + // copy-mode scrollback. xterm.js forwards tmux's mouse-tracking escapes + // automatically once mouse mode is on, so no client-side change is needed. + execImpl(["set-option", "-t", name, "mouse", "on"]); } /**