perf: Push QueryList filters to tmux via -f format filter

オープン
#646 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
python
領域
api, cli

調査の方向性

Start at the server.panes.filter(...) entry point and compare it with the libtmux-mcp search_panes proof of concept, which calls server.cmd('list-panes', '-a', '-f', ...). Decide whether this should be a new tmux_filter method or a transparent filter optimization, then verify compatible filters are applied by tmux while existing QueryList behavior remains correct.

索引モデルが issue の本文から書いたものです。

説明

enhancement

Problem

server.panes.filter(pane_current_command__contains="vim") fetches ALL panes from tmux, then filters in Python. For servers with many sessions/windows, this is unnecessarily slow.

tmux native support

tmux's list-panes, list-windows, and list-sessions commands support a -f flag that applies a format-string filter server-side:

Filter panes by command (done in C, not Python):

$ tmux list-panes -a -f "#{m:*vim*,#{pane_current_command}}"

Filter panes by content (C-level grid search):

$ tmux list-panes -a -f "#{C:search_term}"

Case-insensitive metadata match:

$ tmux list-panes -a -f "#{m/i:*pattern*,#{window_name}}"

Format matching operators:

  • #{m:glob,text} — glob match (wraps with *...* for contains)
  • #{m/i:glob,text} — case-insensitive glob
  • #{m/r:regex,text} — POSIX extended regex
  • #{C:text} — content search (visible pane text)

Proposed approach

Add a method or option to push compatible QueryList filters into tmux's -f flag:

# Option A: New method
server.panes.tmux_filter(pane_current_command__contains="vim")

# Option B: Optimize existing .filter() transparently
# Detect when filters can be pushed to tmux and do so automatically

Performance impact

For a server with 50 panes, Python-side filtering requires fetching and parsing all 50 pane objects. Tmux-side filtering returns only matching panes, reducing both IPC and object creation overhead.

Context

The libtmux-mcp search_panes tool uses server.cmd('list-panes', '-a', '-f', ...) directly as a proof of concept for tmux-side filtering. See also #645 for the content search API.

主要言語
Python
スター
1.2k
フォーク
127
平均マージ
2時間 13分
マージ済み PR(30日)
1

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

tmux-python/libtmux のほかの issue

tmux-python/libtmux の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。