"smolder 만으로도 iterm을 쓸 이유가 없어야 해." — 아빠
내가 소유하지 않은 일일 드라이버
살면서 쓰는 터미널은 텍스트 뷰가 아니야. 탭, 분할, 검색하는 스크롤백, 점심 먹고 돌아와도 살아 있을 세션. 이 가족에선 다른 앱이 너인 척하지 않고도 폴더나 자리를 여는 길도 있어. 몇 년 동안 그 일일 드라이버는 iTerm 이었고, 한 창에 일이 둘 이상이면 판이랑 픽셀 사이에 tmux 가 앉았어.
멀리서 보면 그 짝은 완전해 보여. iTerm 이 그리고, tmux 가 나누고, 셸이 돌아. 분할도 되고 떨어졌다 다시 붙기도 해. 문제는 그중 하나가 나빠서가 아니야. 문제는 이음새야. 내가 소유하지 않은 프로그램 둘이 직렬화된 스트림으로 말해. 평소엔 화면 스트림이고, tmux 의 control mode 에선 판 출력과 명령 스트림이야. 가족이 필요한 건 전부 그 스트림의 잘못된 쪽에 앉아 있어.
이음새가 실제로 받아 가는 값
네이티브 앱에게 판은 객체야. 옮기고, 프로세스를 붙이고, 전경에 뭐가 있는지 묻고, 선택을 셀 사각형이 아니라 텍스트로 복사해. tmux 에게 판은 tmux 자신의 서버 안에 살고, tmux 자신의 프로토콜을 거쳐 유리에 닿아. 평소엔 그 프로토콜이 셀로 된 화면이라서 선택은 파서가 돼. tmux 의 control mode 는 더 나아. iTerm2 에 판 ID, 판마다의 출력, 명령 통로를 넘겨 주고, iTerm2 는 tmux 판을 자기 네이티브 분할로 그려. 그래도 파싱하는 곳이 옮겨 갈 뿐이야. 판은 여전히 가족이 소유하지 않은 프로그램 안의 객체고, 복원은 여전히 그 서버가 아직 뭘 들고 있느냐는 질문이야. 새 분할에 폴더를 열고 싶은 형제는 세 번째 프로그램을 거쳐 tmux 의 명령어로 말하거나, 사람인 척 타이핑해야 해.
손을 다시 iTerm 으로 보낸 마찰은 전부 이 모양이었지. 한 창에 하네스 네 개가 느려졌는데, 프로세스에서 픽셀로 가는 길이 여기서 계측할 수 없는 멀티플렉서를 건너서 원인을 못 쟀어. 네이티브 파일 앱이 터미널에 폴더를 열고 싶은데 Launch Services 로 가야 했고, 그건 앱은 알아도 판은 몰라. 대회 엔진이 탭 하나에 자리 넷을 원했는데 창 넷이 뜨거나, 심판이랑 저자를 구별 못 하는 tmux 배치가 됐어.
경계에 이름을 붙여
Smolder 의 대답은 "우리 집 iTerm"이 아니야. "판 경계를 소유한다"야. 판마다 PTY 스트림 하나, 그 스트림을 픽셀로 바꾸는 임베드된 에뮬레이터, 네이티브 배치와 선택, 프로세스를 실제로 소유하는 데몬으로의 사설 부착. 바깥 멀티플렉서가 로컬 판을 합성하지 않아. 먼 호스트의 원격 tmux 는 나중의, 다른 문장이야. 로컬 창을 남의 화면 프로토콜로 감싸도 된다는 허가가 아니야.