First of all, I've been eagerly waiting for a native Windows tmux for a long time, and psmux is exactly what I hoped for. Really excited to see it evolve — keep up the great work!
I'm looking to build an fzf-based TUI using psmux (similar to fzf --tmux / tmux-fzf on Linux), so I ran a systematic audit of commands relevant to that workflow. Below are the results on psmux 0.4.10, Windows 11, PowerShell 7+.
Summary
Several commands are registered in list-commands but produce no visible effect — they return exit code 0 silently with no rendering. One command (choose-tree) is listed but returns "unknown command" on execution.
Which of these are planned for implementation, and which are intentionally no-ops?
Audit Results
NOT WORKING — Overlay / Visual Rendering
These commands run silently (exit 0) but produce no visible output on screen. Verified via capture-pane -p.
| Command |
Test |
Result |
display-popup |
display-popup echo hello |
No popup rendered |
display-popup |
display-popup -w 50% -h 50% echo test |
No popup rendered |
display-menu |
display-menu -T Menu Item1 a "echo a" |
No menu rendered |
confirm-before |
confirm-before -p "sure?" "echo yes" |
No prompt rendered |
display-panes |
display-panes |
No pane numbers rendered |
clock-mode |
clock-mode -t default |
No clock rendered |
NOT WORKING — Listed but "unknown command"
| Command |
Test |
Result |
choose-tree |
choose-tree -t default |
psmux: unknown command: choose-tree (rc=1) |
Note: choose-tree appears in psmux list-commands output but fails on execution.
NOT WORKING — No observable effect
| Command |
Test |
Result |
display-message (status bar) |
display-message "hello" (without -p) |
No message in status bar |
pipe-pane |
pipe-pane -t default "cat > /tmp/test" → send-keys → close |
Output file not created |
copy-mode |
copy-mode -t default |
#{pane_in_mode} returns 0 after execution |
WORKING — Scripting & Data
| Command |
Test |
Result |
run-shell |
run-shell "echo hello" |
✓ Outputs "hello" |
if-shell |
if-shell "true" "run-shell 'echo T'" "run-shell 'echo F'" |
✓ Evaluates correctly (both branches) |
send-keys |
send-keys -t default "echo hi" Enter |
✓ Keystrokes delivered |
capture-pane |
capture-pane -t default -p |
✓ Returns pane content |
set-buffer / show-buffer |
set-buffer "data" → show-buffer |
✓ Buffer stored and retrieved |
list-buffers |
list-buffers |
✓ Lists all buffers with sizes |
paste-buffer |
paste-buffer -t default |
✓ Pastes into pane |
load-buffer / save-buffer |
save-buffer /tmp/f → load-buffer /tmp/f |
✓ Silent but functional |
delete-buffer |
delete-buffer |
✓ Buffer removed |
set-environment / show-environment |
set-environment FOO bar → show-environment |
✓ Variable stored and listed |
set-hook / show-hooks |
set-hook after-new-window "..." → show-hooks |
✓ Hook registered and listed |
find-window |
find-window "pwsh" |
✓ Finds matching window |
choose-buffer |
choose-buffer |
✓ Lists buffers (non-interactive) |
display-message -p |
display-message -p "#{session_name}" |
✓ Prints to stdout |
list-keys / bind-key / unbind-key |
Standard operations |
✓ All functional |
set-option / show-options |
set-option -g status-style "fg=white" |
✓ Options stored and retrieved |
| Format variables |
#{session_name}, #{window_index}, #{pane_pid}, #{?window_active,...} |
✓ All resolved correctly, conditionals work |
Use Case Context
My primary interest is display-popup for running fzf inside a popup overlay (the pattern used by fzf --tmux and tmux-fzf). The scripting foundation (run-shell, if-shell, send-keys, capture-pane, hooks, format variables) is excellent — the overlay rendering layer is the missing piece.
Thanks for building this!
First of all, I've been eagerly waiting for a native Windows tmux for a long time, and psmux is exactly what I hoped for. Really excited to see it evolve — keep up the great work!
I'm looking to build an fzf-based TUI using psmux (similar to fzf --tmux / tmux-fzf on Linux), so I ran a systematic audit of commands relevant to that workflow. Below are the results on psmux 0.4.10, Windows 11, PowerShell 7+.
Summary
Several commands are registered in
list-commandsbut produce no visible effect — they return exit code 0 silently with no rendering. One command (choose-tree) is listed but returns "unknown command" on execution.Which of these are planned for implementation, and which are intentionally no-ops?
Audit Results
NOT WORKING — Overlay / Visual Rendering
These commands run silently (exit 0) but produce no visible output on screen. Verified via
capture-pane -p.display-popupdisplay-popup echo hellodisplay-popupdisplay-popup -w 50% -h 50% echo testdisplay-menudisplay-menu -T Menu Item1 a "echo a"confirm-beforeconfirm-before -p "sure?" "echo yes"display-panesdisplay-panesclock-modeclock-mode -t defaultNOT WORKING — Listed but "unknown command"
choose-treechoose-tree -t defaultpsmux: unknown command: choose-tree(rc=1)Note:
choose-treeappears inpsmux list-commandsoutput but fails on execution.NOT WORKING — No observable effect
display-message(status bar)display-message "hello"(without-p)pipe-panepipe-pane -t default "cat > /tmp/test"→ send-keys → closecopy-modecopy-mode -t default#{pane_in_mode}returns 0 after executionWORKING — Scripting & Data
run-shellrun-shell "echo hello"if-shellif-shell "true" "run-shell 'echo T'" "run-shell 'echo F'"send-keyssend-keys -t default "echo hi" Entercapture-panecapture-pane -t default -pset-buffer/show-bufferset-buffer "data"→show-bufferlist-bufferslist-bufferspaste-bufferpaste-buffer -t defaultload-buffer/save-buffersave-buffer /tmp/f→load-buffer /tmp/fdelete-bufferdelete-bufferset-environment/show-environmentset-environment FOO bar→show-environmentset-hook/show-hooksset-hook after-new-window "..."→show-hooksfind-windowfind-window "pwsh"choose-bufferchoose-bufferdisplay-message -pdisplay-message -p "#{session_name}"list-keys/bind-key/unbind-keyset-option/show-optionsset-option -g status-style "fg=white"#{session_name},#{window_index},#{pane_pid},#{?window_active,...}Use Case Context
My primary interest is
display-popupfor running fzf inside a popup overlay (the pattern used byfzf --tmuxand tmux-fzf). The scripting foundation (run-shell, if-shell, send-keys, capture-pane, hooks, format variables) is excellent — the overlay rendering layer is the missing piece.Thanks for building this!