wmux: Windows 上的 tmux,终端多路复用

stebest 2026-09-22 00:56 1

在 Windows 上干活,最烦的是终端窗口。编译一个、跑服务一个、看日志一个,任务栏排成一条。手一抖点个叉,全没了;远程桌面一断,也全没了;重启一次,从头再摆一遍。


tmux 在 Linux 上把这事解决很多年了。Windows 这边一直别扭:要么先装 WSL ,要么 Cygwin 那一套。我想要的是打开 Windows Terminal 就能用的东西,所以自己写了一个,叫 wmux 。Rust 写的,直接跑在 Windows 自己的 ConPTY 上,一个 3 MB 的 exe ,下载就能用。


快捷键基本就遵循 tmux 那套了,没啥学习成本。C-b % 左右分,C-b " 上下分,h j k l 在几块之间走,C-b z 把当前这块放大到整屏,C-b d 走人。PowerShell 、cmd 、WSL 可以同时待在一个窗口的不同格子里,PSReadLine 的组合键、Ctrl+Space 、中文输入法、WSL 里的 vim 和 htop ,该怎么样还怎么样——按键是按 Windows 原生格式转过去的,不是拿字符凑出来的。


最要紧的一点:关掉终端,里面的东西照样活着。第二天换个窗口 wmux attach 接回来,编译还在跑,日志还在滚。电脑重启了也不要紧,wmux resume 把窗口、分屏布局、每块在跑什么命令、在哪个目录全带回来,连当时屏幕上那些输出一起——看着像从来没关过。


这版还学会了一件事:任务跑完了会喊你。


任务跑完了,状态栏上那个窗口就多一个 #


我习惯把要跑十几分钟的东西丢到另一个窗口,然后去干别的。以前它跑完了没人知道,崩了更没人知道——那一格直接消失,连怎么死的都看不到。现在配置里打开两行:


set -g monitor-activity on
set -g remain-on-exit on

你没看着的窗口一有动静,状态栏上那个窗口名后面就多一个 #,C-b M-n 一下跳过去。响铃是 !,太久没声音是 ~。崩掉的程序也不会带走那一格:pane 留在原地,反显一行 [cmd exited with 3],它打印过的东西一个字不少,想重来就 respawn-pane 原地复活。凌晨三点崩的,早上八点还在那儿等你。


想把整个日志留下来也可以,一条命令的事:


wmux pipe-pane -t build "$input | Add-Content build.log"

还有两个我自己天天用的小东西:C-b > 弹出当前这块 pane 能干的事(分屏、交换、放大、关掉),挑一个字母就行,不用记快捷键; display-popup 在窗口正中开个小框跑命令,看完就收走,布局一点不动。


命令名、配置语法都跟 tmux 一样,现成的 .tmux.conf 拿过来基本能用,不认识的选项会被忽略掉而不是报错。



  • 下载( msi 和免安装 zip 都有): https://github.com/newdee/wmux/releases/latest

  • 仓库: https://github.com/newdee/wmux

  • 带录屏的功能介绍: https://dfine.tech/wmux/


MIT ,欢迎试,欢迎骂。

最新回复 (9)
  • billccn 09-22 03:05
    1
    > 远程桌面一断,也全没了
    你是不是对远程桌面有什么误解?
  • runze 09-22 04:28
    2
    介绍产品也要用 AI 嘛
  • yiwayhb 09-22 08:32
    3
    又一个 psmux ?
  • Sezxy 09-22 09:24
    4
    windows terminal 不够用吗
  • 0x5c0f 09-22 09:31
    5
    没人用过 herdr 么?
  • stebest 楼主 09-22 10:25
    6
    @0x5c0f 用过,但是跟 tumx 用起来还是有差距,就主打一个 agent 提醒而已
  • stebest 楼主 09-22 10:33
    7
    @billccn 大概是 AI 有误解把
  • stebest 楼主 09-22 10:38
    8
    @yiwayhb 看了一下,挺相似的,应该是撞车了。唯一的区别就是多加了电脑重启后恢复窗口布局和内容,以及后台任务汇报吧
  • stebest 楼主 09-22 10:44
    9
    @yiwayhb 另外关于 psmux ,用的时候没找着,找到可能不会有这东西了。当然,用的有问题可能也会重写一个。
* 帖子来源V2EX
返回