로컬 판 모델에는 감싸기가 없어
데몬이 프로세스를 소유한 다음에도, 맥 앱은 살면서 쓸 터미널이어야 해. 그건 작아 보이고 작지 않은 규칙에서 시작해. 판마다 PTY 스트림 하나. 로컬 판 모델에 "tmux 로 감싸기" 선택지가 없어. 바깥 멀티플렉서가 로컬 판을 한 화면으로 합성하는 건 이 퀘스트가 연 이음새야. 소유하지 않은 프로그램 둘, 직렬화된 사각형, 파서가 된 선택, 짐작이 된 복원. 판을 소유한다는 건 프로세스에서 픽셀로 가는 길에 그 멀티플렉서가 없다는 뜻이야.
SwiftTerm 이 그 스트림 하나를 그려. 판마다 터미널 뷰 하나, 설정하고, 패치하지 않아. 에뮬레이터는 임베드야. 픽셀은 내 것이야. 중첩 분할, 드래그, 최대화, 트리로 움직이는 탭. 그건 그 일대일 매핑 위에 앉은 네이티브 객체야. 사이에 멀티플렉서가 앉으면, 그 객체마다 남의 격자 것이 돼. 평소엔 파싱한 스크린샷이고, tmux 의 control mode 로 iTerm 이 tmux 판을 네이티브 분할로 그려 줘도 가족이 소유하지 않은 tmux 판이야.
원격 tmux 는 다른 문장이야
앞에 앉아 있지 않은 먼 호스트는 아직 tmux 를 돌릴 수 있어. 그 호스트에도 가족이 데몬을 소유할 때까지, 그건 Smolder 주인이 없는 기계를 위한 정직한 멀티플렉서야. 거기로 SSH 하고, 붙고, 그 호스트가 줄 판 객체가 없으니 그쪽 화면 프로토콜 안에서 살아. 그 문장은 로컬 창을 감쌀 허가가 아니야. 로컬 판은 자기 자신의 tmux 클라이언트가 되지 않아.
실패 모드는 이런 설정이야. "로컬 분할에 tmux 를 써. 괜찮아, 원격에서 이미 말하잖아." 영어 단어는 같고 주인은 둘이야. 로컬에서 멀티플렉서는 Smolder 야. 원격에서 남의 tmux 는 판 하나 스트림 안의 손님이야. 입을 다르게 해. 판 안의 손님은 내용이야. 로컬 판을 감싸는 래퍼는 재발이야.
뷰 하나, 스트림 하나, 주인 하나
데몬이 PTY 를 쥐어. 앱은 SwiftTerm 뷰를 쥐어. 그 뷰가 PTY 의 출력을 읽고, 같은 세션에 붙은 다른 표면들과 나란히 그 PTY 에 입력을 써. 두 번째 격자는 없어. 셀로 판을 합성하는 로컬 세션 서버도 없어. 분할은 뷰의 네이티브 분할이고, 뷰마다 자기 PTY 에 묶여. 그래서 형제가 치는 척하지 않고 새 판에 폴더를 청할 수 있고, 탭이 자리 메우기 셸 없이 트리로 움직일 수 있어.
이 레슨은 데스크톱 손의 바닥이야. 트랙의 나머지(트리, 움직이는 탭, arrangement, 크롬)가 그 매핑을 전제해. "tmux 기능을 되찾으려고" 매핑을 깨면 기능을 더한 게 아니야. 판을 스트림에 다시 판 거야.