Skip to content

Tmux Feature Comparison

Woojin Kim edited this page Jun 23, 2026 · 4 revisions

tmux 기능 대비 pytmux 기능 제안

상태: 구현 현황 반영(단일 세션 + 탭 모델, 상단 탭바, 패널 테두리/이름, 탭별 레이아웃 슬롯, textual-dark 색 스키마) 작성일: 2026-06-02 / 갱신: 2026-06-03 관련 문서: User-Manual · Screenshots

tmux 가 제공하는 기능들을 검토해 pytmux 가 갖추면 좋을 기능을 우선순위별로 제안한다. 각 항목은 tmux 의 대응 개념/명령과, pytmux 에서의 적용 방식, 현재 상태를 함께 적는다.

범례 — 현재 상태

  • 구현됨: pytmux.py 에 동작 코드 존재
  • 📐 설계됨: DESIGN.md 에 설계되어 있으나 미구현 또는 부분 구현
  • 미구현: 아직 설계·구현 모두 없음

우선순위

  • P0 (필수): tmux 사용자가 없으면 불편을 크게 느끼는 핵심 기능
  • P1 (권장): 일상 사용 빈도가 높아 곧 필요한 기능
  • P2 (선택): 있으면 좋은 편의/고급 기능
  • P3 (향후): 큰 작업이거나 틈새 기능

0. 현재 상태 요약

이미 동작하거나 설계된 것:

계층 모델(중요): 멀티 세션 개념은 제거되었고 항상 단일 세션으로 시작한다. 최상위 전환 단위는 (= tmux 의 윈도우 역할), 탭마다 단일 윈도우가 종속되며, 그 윈도우를 패널로 분할한다. 즉 Session → Tab → Window → Pane.

영역 기능 상태
세션 단일 세션 모델(멀티 세션 없음), detach, kill-server, ls(탭/패널 요약)
새 탭(=새 윈도우), 다음/이전/번호 선택, 상단 탭바(마우스/ESC 방향키·스크롤)
패널 가로(-h 상/하)·세로(-v 좌/우) 분할, 방향 이동·순환, 삭제, 리사이즈(키/마우스)
화면 pyte 렌더, 패널 테두리 박스(활성=primary 파랑/항상 표시), 하단 상태표시줄
스크롤백 패널별 독립 스크롤백(휠/키), 뷰포트 고정
입력 prefix 키 + 명령 프롬프트(고정 : 프리픽스) + 메뉴(ModalScreen)
마우스 휠 스크롤, 클릭 포커스, 경계 드래그 리사이즈, 우클릭 메뉴, 탭바 클릭
색상 p4v-tui 와 동일한 textual-dark 테마 팔레트
영속성 데몬 분리로 앱/터미널 종료에도 셸 유지, 탭별 레이아웃 슬롯 저장/불러오기

1. 패널(Pane) 기능

기능 tmux 대응 pytmux 적용 우선순위 상태
패널 줌(전체화면 토글) prefix z (resize-pane -Z) 활성 패널만 윈도우 전체로 확대/복귀. 줌 상태 상태줄 표시 P0
패널 번호 표시 후 점프 prefix q (display-panes) 각 패널에 번호 오버레이, 숫자 키로 선택 P1
레이아웃 프리셋 prefix Space, select-layout (even-h/v, main-h/v, tiled) 트리를 프리셋대로 재배치하는 명령/메뉴 P1
패널 swap/rotate prefix { } Ctrl-o 두 패널 위치 교환, 윈도우 내 회전 P1
패널 → 새 탭 분리(break) prefix ! (break-pane) 패널을 새 탭으로 떼어냄 P2
패널 합치기(join) join-pane 다른 탭의 패널을 현재로 끌어옴 P2
마지막 패널 토글 prefix ; 직전 활성 패널로 복귀 P2
입력 동기화(broadcast) setw synchronize-panes 한 입력을 윈도우 내 모든 패널에 전송 P2
패널 테두리/아웃라인 pane border 패널이 하나여도 항상 테두리 박스, 활성=primary(파랑)·비활성=회색, 경계는 ┬┴├┤ 로 연결 P1
패널 제목/이름 select-pane -T, pane-border-status prefix T/명령으로 제목 설정. 리네임되면 위쪽 테두리 중앙에 이름 표시(활성색), 상태줄에도 활성 패널 제목 P2
respawn-pane respawn-pane 같은 슬롯에서 셸 재시작(새 PTY, 패널 id 유지) P3

2. 탭(Tab) 기능 — tmux 의 윈도우에 대응

각 탭은 단일 윈도우를 가지며 그 윈도우를 패널로 분할한다. 탭 명령은 tmux 의 윈도우 명령(new-window/kill-window/…)과 동일 동작이며 *-tab 별칭도 받는다.

기능 tmux 대응 pytmux 적용 우선순위 상태
새 탭 prefix c (new-window) 새 탭=새 윈도우(단일 패널) 생성 후 활성화. new-tab/new-window P0
탭 이름 변경 prefix , (rename-window) 입력 프롬프트로 이름 변경. rename-tab P0
탭 삭제 prefix & (kill-window) 콘텐츠 오른쪽 위 [x]·prefix &·키바인딩 모두 중앙 확인 팝업(닫기/취소 좌우 배치, 선택된 쪽만 유채색·미선택은 무채색, 기본=취소). kill-tab P0
상단 탭바 (tmux 없음) 상단 탭바(탭 목록 + 마지막 탭 오른쪽 [+]) 항상 표시(기본). 탭 닫기 [x] 는 콘텐츠 오른쪽 위로 분리. 마우스 클릭, ESC 모드 위 방향키로 포커스→←→ 선택→Enter 전환, 폭 초과 시 ◀▶ 스크롤. set tab-bar auto(2개↑일 때만) P1
마지막 탭 토글 prefix l (last-window) 직전 탭으로 복귀 P1
탭 재정렬/이동 prefix . (move-window), swap-window 인덱스 변경·교환(move-tab/swap-tab). 현재 탭 좌/우/맨앞/맨뒤(move-tab-left/right/first/last), 탭바 마우스 드래그, ESC 탭바 포커스에서 Shift+←→ 이동 후 Enter 확정 P2
탭 선택기(트리) prefix w (choose-tree) 탭 트리 모달에서 선택→전환(고정 탭은 * 표식) P1
탭 고정(핀) (tmux 없음) 자주 쓰는 탭을 탭바 오른쪽 고정 구역( 구분자·* 글리프)에 분리 → 스크롤돼도 항상 보이고 실수 닫기 방지. prefix P·ESC P·메뉴·명령(pin-tab/unpin-tab/pin-toggle경계 너머 드래그 토글. remote-attach 병합 원격 탭도 로컬 뷰에서 고정 P2
디렉토리 트리(NCD) ncd(별칭 nc) Norton Change Directory 풍 — 루트→현재 cwd 펼친 디렉토리 전용 트리 모달. ↑↓ 이동·→펼치기(지연)·←접기·이름 타이핑 speed search·Enter=현재 패널 cd·⇧Enter/^O=그 디렉토리 새 패널·Esc P2
자동 이름(automatic-rename) automatic-rename 활성 패널 포그라운드 명령으로 2초마다 탭 이름 갱신, 수동 rename 시 해제 P2
활동/벨 모니터링 monitor-activity, monitor-bell 비활성 탭 출력(#)·벨(!)을 탭/상태줄 플래그로 표시 P2
탭별 레이아웃 저장/불러오기 (tmux 없음) 활성 탭의 윈도우+패널 트리를 이름 슬롯으로 저장(layout-save), 현재 탭 덮어쓰기/새 탭으로 불러오기(layout-load/layout-load-new, 선택기·메뉴), 디스크 영속 P2

3. 세션(Session) 모델 — 단일 세션

멀티 세션 개념은 사용자 표면에서 제거되었다. 항상 하나의 세션으로 시작하며, 여러 작업 공간은 으로 구분한다(위 2절).

기능 tmux 대응 pytmux 적용 우선순위 상태
단일 세션 attach attach 이름 없이 단일 세션에 attach(세션 이름 요청 무시) P0
detach prefix d (detach-client) 앱 종료, 셸은 데몬에서 유지 P0
다중 클라이언트 미러링 같은 세션 동시 attach 여러 클라이언트가 한 세션 공유, 최소 크기로 레이아웃 동기화 P2
다중 세션/세션 전환/이름변경 new-session 등 제거됨(단일 세션 모델)

4. 복사 모드 / 스크롤백 (copy-mode)

기능 tmux 대응 pytmux 적용 우선순위 상태
스크롤백 스크롤 copy-mode 스크롤 패널별 휠/키 스크롤
스크롤백 검색 / ? (search-forward/backward) 스크롤백 모드에서 / 검색·매치 라인 하이라이트·n/N 다음/이전 P1
텍스트 선택/복사 space→enter, vi/emacs 선택 스크롤백 모드에서 마우스 드래그 선택→페이스트 버퍼 복사(선택 영역 하이라이트). 분할 화면에서 선택은 시작 패널 경계 안으로 클램프(중간 줄이 인접 패널·테두리까지 복사되던 오염 제거, §2.4) P1
클립보드 연동 OSC52, pbcopy 연동 복사 시 OS 클립보드(pbcopy/xclip/wl-copy)에도 저장, paste-clipboard 로 붙여넣기 P1
붙여넣기 버퍼 prefix ], paste-buffer, choose-buffer 다중 페이스트 버퍼(prefix ] 붙여넣기) + 선택기(prefix =) P2
히스토리 지우기 clear-history 활성 패널 스크롤백 비우기(clear-history 명령) P2
vi/emacs 키 테이블 mode-keys set mode-keys vi|emacs 로 스크롤백 모드 키맵 선택(j/k·Ctrl-p/n 등) P2

5. 명령 / 키 / 설정

기능 tmux 대응 pytmux 적용 우선순위 상태
명령 프롬프트 prefix : (command-prompt) ESC→: 또는 prefix :. 하단 입력줄(고정 : 프리픽스, 백스페이스로 안 지워짐), ?/help 로 명령 목록(카테고리 탭: ←→ 카테고리 전환·↑↓ 명령 이동·Enter 선택), 타이핑 자동완성(옵션 -h 등 포함). 부분일치 후보 영역: 명령 이름 중간 일치(예: tabnew-tab/kill-tab)까지 입력 줄 위로 펼쳐 ↑↓ 선택·Tab/Enter 채우기. 완성 명령 오른쪽 힌트: 토글/선택지 인자(on/off 등)는 ‹ 토글 켜기 끄기 › 로 떠 ←→·↑↓ 로 고르고 Enter 실행, 자유 텍스트 인자는 밑줄(____). 인자 이력(remote-attach 등): 호스트·레이아웃 이름 등 직접 친 인자를 기억해 다음에 추천(명령+공백 후 ↑↓ 후보·Tab 채움)·자동완성(타이핑 중 ghost, →/Tab 수락); remote-* 는 호스트 이력 공유, 서버별 <state>.arghist.json 영속 P0
설정 파일 ~/.tmux.conf ~/.config/pytmux/config 로드(prefix·mouse·색·bind) P0
prefix 키 변경 set prefix 설정으로 prefix 재정의 P1
사용자 키 바인딩 bind-key / unbind-key 설정 bind <key> <command> + 런타임 bind-key/unbind-key [-a]/list-keys(tmux C-x 표기 정규화) P1
설정 리로드 source-file source-file [path] 로 재시작 없이 prefix/색/키맵/바인딩 재적용 P1
옵션 체계 set/setw (server/session/window/pane) 런타임 set <opt> <val> 적용 + show-options 조회(클라 옵션), 윈도우 옵션은 setw P2
통합 설정 화면(고유) (tmux 없음) settings(별칭 config/preferences) — config 파일·런타임 명령·서버 opts·플러그인 전용 화면에 흩어진 설정을 한 화면에서. 좌측 세로 카테고리 탭(클릭·Tab 으로 그 카테고리로 스크롤), ←→ 값 변경(선택지 펼쳐 현재값 강조·즉시 적용), 문자열 Enter 입력, 플러그인 설정은 링크. config-scoped 설정은 사용자 config 파일에 자동 기록(주석·바인딩 보존→재시작 유지) P2
command-alias / if-shell / run-shell 동명 alias 설정·if-shell/run-shell(출력은 버퍼+모달) P3
hooks set-hook set-hook <event> <cmd> (client-attached/after-new-window/alert-bell) P3

6. 상태표시줄 / UI

기능 tmux 대응 pytmux 적용 우선순위 상태
하단 상태줄 status line 탭·줌·시계 표시. 상단 탭바가 보이면 하단 탭 목록은 생략
상단 탭바 (tmux 없음) 탭 인터페이스(탭/마지막 탭 오른쪽 [+]; 닫기 [x]는 콘텐츠 위로), 마우스·ESC 방향키·가로 스크롤 P1
색 스키마 (tmux 색 옵션) p4v-tui 와 동일한 textual-dark 팔레트(primary/surface/panel/accent 등). status-bg/fg 로 덮어쓰기 P1
상태줄 포맷 커스터마이즈 status-left/right, #{} 포맷 status-left/right 템플릿(#S/#h/#H/#{pane_title}/strftime) + 색 P1
상태줄 위치/다중 줄 status-position, status 2~5 set status-position top|bottom + set status N(0~5 줄, 0=숨김) · set status-format <line> <fmt>(보조 줄) P2
갱신 주기 status-interval set status-interval N 초마다 상태줄(시계) 갱신 P2
메시지/알림 표시 display-message 상태줄에 일시적 메시지(복사 알림 등), display-message 명령 P1
시계 모드 prefix t (clock-mode) 현재 패널 전체를 큰 시계로 덮는다. 뒤의 터미널 출력은 흐리게(dim) 계속 갱신되어 보이고, 우상단 [x] 클릭·그 패널에서 clock-mode 명령·하단 바 시계(시각 부분) 클릭(토글)으로 닫는다 P3
달력 모드(고유) calendar-mode/cal 현재 패널 전체를 이번 달 달력으로 덮는다(시계 모드 미러). 뒤 출력은 dim, 오늘 날짜 강조, 자정 넘어가면 갱신. 하단 바 날짜 클릭·우상단 [x]·명령으로 토글. 한 패널엔 시계/달력 중 하나만 P3
팝업 창 display-popup display-popup <cmd> 를 떠있는 라이브 PTY 모달로 실행(인터랙티브; 키 입력 라우팅, 명령 종료 시 자동 닫힘, -w/-h 크기, -C 닫기, prefix 로 강제 닫기) P2
메뉴 display-menu 컨텍스트 메뉴(패널·레이아웃·탭 그룹/서브메뉴로 정리, 자주 쓰는 항목은 최상위, 파괴적 동작은 구분선 아래)
터미널 제목 설정 set-titles set set-titles on + set-titles-string(#S/#I/#W)로 터미널 제목 갱신 P2
마우스 모드 토글 set mouse 설정 set mouse on/off 로 전환 P2
새 탭/패널 시작 디렉토리 default-path / -c #{pane_current_path} set default-path current|home|<경로> (기본 current=현재 패널 cwd 상속). 새 탭·split 모두 적용, 명령에 -c <경로> 지정 시 우선. macOS 는 lsof 로 cwd 추정 P2

7. 통합 / 자동화

기능 tmux 대응 pytmux 적용 우선순위 상태
토큰 리밋 자동 재개(pytmux 고유) 패널 출력에서 사용량 리밋 해제 시각을 읽어 그 시각에 자동으로 재개 메시지 입력. 패널별 토글(prefix R) P1
Claude Code 상태 아이콘(고유) 패널 화면 휴리스틱으로 Claude Code 상태를 판별해 탭에 아이콘 표시: 대기 ○ / 처리중 ◐ / 리밋 멈춤 ⊘ (Claude 실행 탭에만) P2
Claude 프롬프트 히스토리(고유, 플러그인) Claude 패널에 입력한 프롬프트를 패널별 시간순으로 모아 prompt-history(별칭 prompts·ph) 팝업으로 보거나 그 위치로 점프, : 작성 중엔 직전 프롬프트를 미리보기로 표시(claude-prompt-history 플러그인). 타이핑·붙여넣기(모바일 받아쓰기/자동완성 포함) 모두 추적. (옛 패널-내부 '스티키 헤더'는 2026-06 제거되고 이 플러그인으로 대체됨) P2
Claude 토큰/컨텍스트 표시(고유, best-effort) 활성 Claude 패널 화면에서 컨텍스트 사용률/토큰 수를 휴리스틱으로 추출해 하단 상태줄에 ctx NN% / NNk tok 표시(Claude 가 고정 위치로 출력하진 않으므로 감지되는 경우에만). 상태줄 토큰 영역을 클릭하면 노트북 탭(기간/계정/세션/한도/대사/경고) 토큰 사용량 팝업 — 시간 뷰는 시각별 5h 한도 계단식 막대, 한도 뷰는 /usage 실측 막대+리셋 카운트다운 P3
Claude 피드백 문구 숨김(고유, 플러그인) Claude Code 의 권유 문구 둘 — 시작 팁 Tip: Use /feedback to help us improve! 와 세션 종료 평가 배너 How is Claude doing this session?(1:Bad … 0:Dismiss) — 를 폭을 유지한 채 공백으로 가려 화면에 안 보이게(claude-disable-feedback 플러그인, server_filter_rows 훅). 키 주입 없이 표시만 가려 작동 중인 턴을 건드리지 않는다(단일 Esc 자동주입은 작동 중 턴을 interrupt 해 폐기). 플러그인 관리 팝업에서 끄거나 디렉토리 삭제 시 다시 보임(delete-to-disable) P3
Claude 보조 자동화 설정(고유) token-saver 명령으로 설정 팝업을 열어 옵트인 보조 동작을 토글: 토큰리밋 자동재개 · 전송 에러 자동 재시도 · idle 시 권한모드 자동 오토 · 프롬프트 단위 정리(완료마다 doc+/clear) · 세션 종료 시 토큰 화면 · 장기 턴/반복 루프 경고(⚠ 알림만). 안전 게이트: 발화직전 재확인·디바운스·busy 취소. 무장된 토큰리밋 자동재개는 상태줄에 ⏳…s(입력=취소) 카운트다운 배지로 미리 보이고, 입력하면 취소된다. (이전의 컨텍스트 잔량 자동 정리·하드스톱 자동 /compact·실측 한도 게이트·일/세션/계정 예산·모델 과선택 힌트는 제거됨) P2
패널 출력 캡처(고유, 진단) 각 패널의 raw PTY 출력을 <sock>.capture/pane-<id>.log 로 무손실 기록(탭/패널 매핑은 sessions.log). Claude 화면 문구 분석·감지 정규식 보강용. 기본 ON, capture-output [on|off] 로 토글, 상태줄 REC 표시. 상태는 <sock>.opts.json 에 영속(서버·클라이언트 재시작 유지) P2
붙여넣기 패스스루(멀티라인/이미지) bracketed paste 외부 터미널 붙여넣기를 bracketed paste 로 감싸 패널에 전달(멀티라인 보존). 이미지는 내부 앱이 공유 OS 클립보드에서 읽음 P1
붙여넣기 테두리 정화(고유) OS 네이티브 선택으로 복사할 때 딸려온 패널 테두리(박스드로잉 │├┤─)를 붙여넣기 단계에서 타깃 제거(strip-box-drawing, 기본 ON). 줄 내부 박스드로잉·markdown 표·빈 줄·ASCII | 는 보존, bracketed paste 는 제외 P2
send-keys send-keys send-keys <키...> 로 활성 패널에 키/텍스트 주입(Enter/C-x/-l 등) P2
capture-pane capture-pane capture-pane [-S] 로 패널(가시/전체) 텍스트를 페이스트 버퍼로 덤프 P2
pipe-pane pipe-pane pipe-pane <cmd> 로 패널 출력을 외부 명령에 복제(빈 인자=토글 off) P3
CLI 제어 tmux <command> pytmux cmd <명령> 으로 외부 셸에서 서버 제어(new-window/split/rename/send-keys 등) P2
레이아웃 영속(재부팅 복원) tmux-resurrect/continuum 전체: save-layout/restore-layout로 탭·패널 트리 직렬화·복원(셸은 새로 시작), 서버 시작 시 자동 복원. 탭별: 이름 슬롯 layout-save/layout-load(2절) P3
작업 보존 재시작(re-exec) tmux 서버 업그레이드 restart-server(별칭 restart): 살아 있는 셸/프로그램·PTY 를 보존한 채 서버 코드만 제자리 os.execv 로 교체. master fd 상속+CLOEXEC 재채택, 패널/Claude 상태·화면 스냅샷 복원, 클라이언트 자동 재접속. restart-all(별칭 full-restart)은 서버 re-exec + 클라 자기 relaunch 까지(클라 코드도 갱신) — 외부 CLI pytmux cmd restart-all 로도 트리거(연결된 클라가 relaunch 통지 수신). restart-check 는 드라이런. P3
중첩(tmux in tmux) prefix 중복 처리 F12 로 outer prefix 가로채기 토글(꺼지면 prefix 가 내부로 전달, 상태줄 NEST) P3

8. 권장 도입 순서 (제안)

  1. 1차(P0) — ✅ 구현 완료 — 즉시 기대하는 핵심: 패널 줌(z), 탭 이름변경(,)·삭제(&)·생성(c), 명령 프롬프트(:), 단일 세션 attach, 설정 파일 로드. (보너스로 prefix 변경·키 바인딩도 함께)
  2. 2차(P1) — ✅ 구현 완료 — 일상 편의: 레이아웃 프리셋, 패널 번호 점프(q), 상단 탭바·탭 선택기, 스크롤백 검색·선택 복사·클립보드, 키 바인딩 커스터마이즈, 상태줄 포맷·메시지 표시, 마지막 탭 토글.
  3. 3차(P2 이상) — ✅ 구현 완료 — 고급/통합: synchronize-panes, break/join-pane, 팝업, 다중 클라이언트, send-keys/capture-pane, 옵션·훅 체계, 재부팅 복원.

현재 FEATURES 표의 모든 항목이 구현되어 있다. pytmux 고유 기능으로 토큰 리밋 자동 재개멀티라인/이미지 붙여넣기 패스스루가 추가되어 있다.

9. pytmux 차별화 관점

tmux 대비 pytmux 가 더 잘할 수 있는(강조할) 지점:

  • 마우스 1급 지원: 드래그 리사이즈·클릭 포커스·우클릭 메뉴·상단 탭바 클릭(탭 전환/추가/삭제·스크롤)·패널 헤더 드래그로 pick-up→swap/탭 이동/새 탭 분리· Shift+드래그 텍스트 선택(복사)·탭바 드래그 재정렬·탭을 패널로 끌어 분할(join) 모두 구현됨. (발견성: 우클릭 메뉴 + list-keys 팝업의 "마우스 제스처" 섹션으로 노출.)
  • 항상 켜진 직관적 스크롤백(R6): copy-mode 진입 없이 휠만으로 과거 화면 확인.
  • TUI 메뉴/선택기 우선: 모든 동작을 키뿐 아니라 메뉴·트리 선택기로 노출해 단축키를 외우지 않아도 전부 조작 가능.

Clone this wiki locally