Skip to content

Commit 3aac988

Browse files
committed
mcp(fix[window_tools]): Use Window.resize() instead of raw cmd
why: Raw window.cmd("resize-window") skips stderr checking and self.refresh() that Window.resize() provides. what: - Replace raw cmd with window.resize(height=height, width=width) - Add test for resize_window tool
1 parent 45cf989 commit 3aac988

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

src/libtmux/mcp/tools/window_tools.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -300,13 +300,7 @@ def resize_window(
300300
session_name=session_name,
301301
session_id=session_id,
302302
)
303-
cmd_args: list[str] = []
304-
if width is not None:
305-
cmd_args.extend(["-x", str(width)])
306-
if height is not None:
307-
cmd_args.extend(["-y", str(height)])
308-
if cmd_args:
309-
window.cmd("resize-window", *cmd_args)
303+
window.resize(height=height, width=width)
310304
return json.dumps(_serialize_window(window))
311305

312306

tests/mcp/test_window_tools.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
kill_window,
1010
list_panes,
1111
rename_window,
12+
resize_window,
1213
select_layout,
1314
split_window,
1415
)
@@ -81,6 +82,19 @@ def test_select_layout(mcp_server: Server, mcp_session: Session) -> None:
8182
assert "window_id" in data
8283

8384

85+
def test_resize_window(mcp_server: Server, mcp_session: Session) -> None:
86+
"""resize_window resizes a window."""
87+
window = mcp_session.active_window
88+
result = resize_window(
89+
window_id=window.window_id,
90+
height=20,
91+
width=60,
92+
socket_name=mcp_server.socket_name,
93+
)
94+
data = json.loads(result)
95+
assert data["window_id"] == window.window_id
96+
97+
8498
def test_kill_window(mcp_server: Server, mcp_session: Session) -> None:
8599
"""kill_window kills a window."""
86100
new_window = mcp_session.new_window(window_name="mcp_kill_win")

0 commit comments

Comments
 (0)