tmux 호환
tmux 와 비교해 zeropty 가 하는 것과 하지 않는 것이에요.
tmux와 기능 비교
zeropty는 프로그램을 띄워 두고 화면을 읽고 키를 보내는 일에 집중해요. 사람이 터미널을 나눠 쓰는 기능은 대부분 없어요.
| 기능 | tmux | zeropty |
|---|---|---|
| 세션 만들기·끝내기·목록, 키 보내기, 화면 읽기 | ✅ | ✅ 같은 인자 |
capture-pane 옵션 | 많음 | -p -e -J -N -S -E -b -q (나머지는 오류) |
| 버퍼 | load/paste/set/show/save-buffer 등 | load-buffer, paste-buffer, capture-pane -b |
pipe-pane, rename-session, resize-window, set-environment -g | ✅ | ✅ (pipe-pane -I는 없음) |
포맷 변수 #{...} | 수백 개 | 세션·창·패널·커서·히스토리·프로세스 변수 25개 (조건식, 수식어 없음) |
사람이 붙어서 보기 (attach) | ✅ | ✅ 읽기 전용(-r), Ctrl-b d, 터미널 크기 맞춤 |
| 창(window)·창 분할(pane) | ✅ | ❌ 세션 하나에 프로그램 하나 |
| 상태 표시줄, 복사 모드, 단축키 설정, 설정 파일, 훅 | ✅ | ❌ |
| 여러 클라이언트가 한 세션에 붙기 | ✅ | ✅ (크기는 마지막에 붙은 터미널을 따라요) |
| PTY | 세션마다 1개 (macOS 한도 511~999개) | 안 씀, 세션 1000개 이상 |
| 전체화면 프로그램 (vim 등) | ✅ | zeropty-tty <프로그램>으로 띄우면 돼요. vim(편집·저장), less(페이지 넘기기·종료), python REPL(줄 편집·히스토리), claude를 확인했어요. top·ps처럼 권한(setuid, entitlement)이 필요한 시스템 프로그램은 안 돼요 |
| 프로그램용 접속 | 제어 모드(-C) | JSON 소켓 프로토콜, Node 클라이언트 |
| 모든 세션 화면에서 글자 찾기 | ❌ 세션마다 capture-pane | ✅ grep-panes (1000개 16~32ms) |
키 입력의 라인 디시플린 (Enter, C-c 시그널, 줄 편집, 에코, C-d) | ✅ PTY | ✅ 엔진이 흉내 내요(같은 키를 tmux와 대조). C-d의 EOF는 입력을 닫아요 |
| 화면에 글자가 뜨거나 출력이 멈출 때까지 기다리기 | ❌ capture-pane을 반복해서 확인 | ✅ wait-pane (서버가 출력이 올 때만 확인, 감지 2ms) |
| 라이브러리로 내장 | ❌ | ✅ C ABI, Node 모듈, Rust crate |
| 실행 중인 세션을 다른 프로세스로 옮기기 | ❌ | ✅ pull-sessions, push-sessions |
| 서버 재시작·업그레이드 후에도 세션 유지 | ❌ | ✅ restart-server |
| 플랫폼 | 대부분의 Unix | macOS와 Linux (kqueue 또는 epoll, DYLD 또는 LD_PRELOAD shim) |