상세 가이드

pytmux 사용 가이드

설치부터 패널·탭·마우스·메뉴·명령·Claude 연동·운영까지, 실제 화면 스크린샷과 함께 안내합니다. 빠르게 둘러보려면 랜딩 페이지를 먼저 보세요.

시작하기 전에

pytmux 는 Python/Textual 로 만든 tmux 유사 터미널 멀티플렉서입니다. 하나의 터미널 안에서 여러 셸을 패널로 나눠 쓰고, 앱이나 터미널 창을 닫아도 셸 세션이 계속 살아 있게 해 줍니다. 단일 서버(데몬)–다중 클라이언트 구조이며 macOS · Linux · Windows(ConPTY) 를 지원합니다.

tmux 명령어를 다 외우지 못해도 됩니다. 마우스·메뉴·명령 프롬프트 세 가지 방식으로 거의 모든 동작을 할 수 있습니다.

1. 설치

파이썬만 있으면 됩니다. Python 3.11 이상을 권장합니다. 의존성을 설치합니다(직접 설치는 pip install textual pyte wcwidth, Windows 는 pip install pywinpty 도 추가).

pip install -r requirements.txt

실행 — 서버가 없으면 자동 기동 후 attach 합니다.

python3 pytmux.py

1.1 pytmux 명령으로 등록 (선택)

래퍼를 ~/.local/bin 에 설치합니다. 인자로 다른 디렉터리를, BIN=pt 로 다른 이름(pt)을 지정할 수 있습니다.

./install.sh ./install.sh /usr/local/bin BIN=pt ./install.sh

Windows(PowerShell)에서는 install.ps1 / uninstall.ps1 을 사용합니다.

1.2 SSH/mosh 접속 시 자동 attach (선택)

원격 로그인하면 곧바로 pytmux 세션으로 들어가도록 ~/.zshrc 등에 추가합니다. 인터랙티브 SSH/mosh 로그인일 때만 attach 하도록 중첩 방지 가드를 둡니다.

if command -v pytmux >/dev/null && [[ -o interactive ]] && [[ -t 1 ]] \ && [[ -z "$PYTMUX" ]] && [[ -z "$LC_PYTMUX" ]] \ && [[ -n "$SSH_CONNECTION$SSH_TTY" ]]; then pytmux fi
주의: exec pytmux 는 권하지 않습니다. pytmux 가 즉시 종료하면 로그인 셸이 함께 죽고, autossh 등과 만나면 재접속 루프가 됩니다.
pytmux 첫 실행 화면
01 · 첫 실행 — 평소 쓰던 셸이 전체 화면으로 뜹니다.

2. 핵심 개념: 탭 → 윈도우 → 패널

pytmux 는 단일 세션 모델입니다. 멀티 세션 개념은 없습니다. 항상 하나의 세션으로 시작하고, 으로 여러 윈도우를 열며, 각 윈도우를 패널로 나눕니다.

  • — 최상위. 1번부터 번호가 매겨지고 상단 탭바에 나타납니다.
  • 윈도우 — 각 탭에 종속된 단일 윈도우.
  • 패널 — 윈도우를 분할한 셸 집합. 활성 패널은 파란 테두리.

셸 영속성: 셸 PTY 를 백그라운드 데몬(서버)이 보유합니다. 앱을 닫거나(detach) 상위 터미널 창을 닫아도 셸은 계속 돌아가고, 다시 실행하면 이어서 붙습니다.

3. 패널 다루기

기본 prefix 는 Ctrl-b 입니다(설정으로 변경 가능).

동작키 / 명령
좌우 분할prefix % · split-window -h
상하 분할prefix " · split-window -v
포커스 이동prefix ←↑↓→ · 패널 클릭
크기 조절경계선 드래그 · resize-pane
줌 토글prefix z
교환(swap)Shift+왼쪽 드래그 · swap-pane
삭제prefix x(확인) · 패널 [x]
중첩 분할 레이아웃
03 · 중첩 분할 — 경계는 인접 패널과 ┬┴├┤ 로 연결됩니다.

패널이 둘 이상이면 각 패널을 테두리로 감싸고, 활성 패널은 파란색, 비활성은 회색으로 표시합니다. swap-pane / rotate-window 로 위치를 바꾸거나 돌릴 수 있고, 레이아웃을 저장/복원할 수 있습니다.

패널 줌
04 · 줌 — 한 패널을 전체화면으로 토글.

4. 탭 다루기

탭이 하나여도 상단에 탭 인터페이스(탭 목록 + 마지막 탭 오른쪽의 [+])가 나타납니다. 활성 탭은 아래 콘텐츠 영역과 연결된 노트북 탭 모양으로 이어집니다.

  • 생성·전환[+] 클릭 · new-tab · prefix 숫자
  • 이름변경rename-tab · 탭 더블클릭
  • 재정렬 — 탭 드래그 · swap-window
  • 고정(핀)prefix P 로 탭을 왼쪽에 고정
  • 삭제 — 탭 [x] · kill-window(확인)
여러 탭과 상단 탭바
08 · 다중 탭 — 1번부터 번호가 매겨지고 드래그로 재정렬.
탭 닫기 확인
10 · 탭 닫기 확인 대화상자.

5. 스크롤백 (복사 모드)

copy-mode 로 따로 들어가지 않아도, 패널 위에서 휠을 올리면 바로 지난 출력을 봅니다. 패널마다 독립적입니다. 스크롤백 안에서 텍스트를 검색하고 점프할 수 있고, 복사 모드 키 스타일은 vi(기본) 또는 emacs 로 설정합니다.

패널 스크롤백
15 · 패널별 스크롤백.

6. 마우스 · 메뉴 · 명령 프롬프트

거의 모든 동작을 마우스로 할 수 있습니다.

  • 경계선 드래그 → 패널 크기 조절
  • 패널 클릭 → 포커스, 우클릭 → 메뉴
  • 휠 → 스크롤백, Shift+드래그 → 패널 swap
  • 시계 클릭 → 시계 모드, 날짜 클릭 → 달력 오버레이

6.1 메뉴 (prefix Enter 또는 우클릭)

패널·레이아웃·탭 그룹(서브메뉴)으로 정리된 메뉴로 거의 모든 동작을 합니다.

서브메뉴가 펼쳐진 메뉴
36 · 서브메뉴로 정리된 계층형 메뉴.

6.2 명령 프롬프트 (prefix : 또는 F12)

공백 검색(clock mclock-mode), ghost 자동완성, 인자 이력 (·Tab)을 지원합니다.

명령 프롬프트
06 · 명령 프롬프트 · 17 명령 팝업(전체 명령 목록).

6.3 디렉토리 트리 (ncd)

루트→cwd 펼침, speed search, Enter 로 cd, ⇧Enter/^O 로 새 패널에서 엽니다.

ncd 디렉토리 트리
27 · ncd 디렉토리 트리.

7. Claude Code 연동

패널에서 claude CLI 를 돌리면 pytmux 가 상태·토큰·한도를 추적합니다. 실행 중인 탭에 상태 아이콘을 표시합니다 — 대기 ○ · 처리중 ◐ · 리밋 멈춤 ⊘. 비활성 탭의 작업이 끝나면 탭 배경색으로 알립니다.

실제 Claude 패널
22 · 실제 claude 가 실행 중인 패널.

7.1 프롬프트 히스토리

보낸 프롬프트 이력을 미리보기·검색·점프합니다(claude-prompt-history 플러그인).

프롬프트 히스토리
31 · 프롬프트 히스토리.

7.2 토큰 리밋 자동 재개

사용량 리밋에 걸려 멈추면 출력의 해제 시각을 읽어 그때 자동으로 재개합니다. prefix R 로 토글하며 상태줄에 AR 로 표시됩니다.

자동 재개 상태줄
12 · 토큰 리밋 자동 재개.

7.3 권한모드 · 시작 규칙

권한모드 footer 를 클릭하면 auto / default / plan 선택 팝업이 열립니다. claude-rules 로 시작 규칙을 자동 주입할 수 있습니다.

권한모드 선택
13 · 권한 모드 선택 팝업 · 28 시작 규칙.

7.4 화면 안정성 (CJK 모호폭 · 깨짐 완화)

Claude Code 처럼 부분 갱신이 많은 TUI 는 단말마다 다른 모호폭(ambiguous-width) 처리 때문에 한글·기호가 겹쳐 보일 수 있습니다. pytmux 는 시작 시 폭을 자동 감지하고, 런타임에 :set ambiguous-width narrow|wide|auto 로 폭 모델을 일관되게 전환합니다. 드물게 출력이 어긋나면 claude-auto-redraw on(기본 off) 으로 완료(busy→idle)마다 패널을 한 번 전체 재출력해 자동 복원하도록 켤 수 있습니다.

8. 토큰 사용량

상태줄의 토큰 배지를 클릭하면 기간 / 세션 / 한도 / 경고 / /usage / 시나리오 노트북 탭으로 보는 사용량 팝업이 열립니다. 화면 스크랩이 아니라 ~/.claude/*.jsonl 트랜스크립트 회계를 권위 출처로 삼아 cache_read 까지 정확히 집계합니다(스크랩 누계는 실제의 약 0.4% 에 불과합니다). 탭 사이는 p(세션) · l(한도) · u(/usage) 키로도 오갑니다. 상단 요약줄(5h% · 주% · ~Σ)은 모든 탭에 공통으로 붙습니다.

8.1 기간 뷰 — 시간 흐름으로

토큰을 월 → 주 → 일 → 시각 계층 트리로 봅니다. 각 행에 토큰 합과 가로 막대가 붙고, Enter / 로 주를 일·시각까지 펼치고 접습니다. 언제 토큰이 몰렸는지 시간 축으로 짚을 때 씁니다.

토큰 사용량 — 기간 뷰
기간 뷰 — 주/일/시각 계층 트리(요약줄: 5h%·주%·~Σ).

8.2 세션 뷰 — Claude 세션별로

p 로 전환합니다. 행이 Claude 세션별 합(대표 탭:패널 라벨 · 타임스탬프 · 토큰)입니다. 닫히고 재사용되는 패널 id 대신 안정적인 세션 id 로 묶어, 어느 세션이 토큰을 많이 썼는지 비교할 때 씁니다.

토큰 사용량 — 세션 뷰
세션 뷰 — 세션별 합 · 탭:패널 · 타임스탬프 · 토큰 막대.

8.3 한도 뷰 — /usage 실측과 리셋

l 로 전환합니다. /usage 실측 한도(세션 5h · 주 전체 · 주 Sonnet)를 % 사용 막대와 리셋 시각으로 보여주고, 현재 5h 창 추정 Σ 와 다음 리셋까지를 블록 숫자 카운트다운 시계로 보여줍니다(매 초 갱신). 첫 두 행에서 로 모델·컨텍스트를 바꿔 적용할 수도 있어, 한도를 보며 모델을 고를 때 씁니다.

토큰 사용량 — 한도 뷰
한도 뷰 — /usage 실측 막대 · 리셋 카운트다운 시계 · 모델/컨텍스트 변경.

9. 운영 · 작업 보존 서버 재시작

실행 중인 셸을 죽이지 않고 코드만 새 이미지로 교체합니다(제자리 re-exec).

명령설명
restart-server서버만 재시작
restart-all서버 + 클라 동시 재시작
restart-check드라이런(실제 재시작 전 점검)

열린 패널의 셸 · 실행 중 프로그램 · 스크롤백을 살린 채 코드만 교체합니다. Windows 는 아웃오브프로세스 pty-host 가 ConPTY 를 영구 소유해 재시작이 HPCON 을 건드리지 않습니다.

재시작 드라이런
21 · restart-check 드라이런.

9.1 네트워크 응답성과 재접속

클라↔서버 IPC 지연이 커지면 패널 외곽선을 빨간색으로 표시하고, 고착되면 reconnect(또는 워치독 자동)으로 실행 중 셸/Claude 를 죽이지 않고 IPC 만 다시 세워 반응성을 회복합니다.

응답성 저하 표시
16 · 응답성 저하 표시.

10. 원격 페더레이션 (ssh)

remote-attach 로 ssh 너머 다른 머신의 pytmux 서버에 붙습니다. 원격 탭은 탭바·외곽선을 분홍색으로 구분하며, 로컬 탭과 섞이지 않습니다. 원격 서버가 없으면 분리 서버를 자동 기동합니다(PYTMUX_NO_REMOTE_AUTOSTART=1 로 opt-out).

원격 attach
34 · 원격 attach — 분홍 탭으로 구분.

11. 설정 파일

pytmux.conf 로 동작을 바꿉니다(pytmux.conf.example 참고). 통합 설정 팝업 :settings 로도 카테고리별로 조정합니다.

설정설명
set prefix C-aprefix 키 변경 (기본: Ctrl-b)
set mouse on마우스 on/off
set strip-box-drawing on붙여넣기 시 패널 테두리(박스드로잉) 제거 (기본 ON)
set tab-bar always상단 탭바: always(기본) / auto(2개 이상일 때만)
set mode-keys vi복사 모드 키 스타일: vi(기본) / emacs
set default-path current새 탭/패널 시작 디렉토리: current / home / <경로>
set ambiguous-width autoCJK 모호폭 처리: narrow(기본) / wide / auto(단말 자동 감지)

pytmux.conf 예시 — 아래 줄을 그대로 복사해 붙여넣으면 됩니다.

set prefix C-a set mouse on set strip-box-drawing on set tab-bar always set mode-keys vi set default-path current set ambiguous-width auto
통합 설정 팝업
40 · 통합 설정 팝업(:settings).

12. 플러그인 (delete-to-disable)

시계·달력·디렉토리 트리(ncd)·IME 한/영 배지·Claude Code 통합·프롬프트 히스토리·세션 리줌·사용 한도 화면·퍼포스 CL 목록·출력 캡처(REC)·피드백 문구 숨김이 모두 pytmuxlib/plugins/<name>/ 디렉토리 하나로 응집된 플러그인입니다. 디렉토리를 지우면 그 기능이 명령·자동완성·렌더 어디에도 안 나타나고 조용히 사라집니다(코어는 레지스트리 훅 + getattr 가드로만 닿음).

시계 모드
18 · 시계 모드 · 09 달력 오버레이.
IME 한영 배지
33 · IME 한/영 배지.
더 깊은 내용(훅 계약·플러그인 제작법)은 저장소 위키의 Plugin Authoring GuideUser Manual 을 참고하세요.