그림이 아니라 트리를 옮겨
탭은 판 스크린샷에 붙인 제목 줄이 아니야. 트리지. 판 컨트롤러, PTY 부착, 제목, 색, 포커스된 판. 창 안에서 끌어 순서를 바꾸고, 새 창으로 떼고, 다른 창에 놓기. 트리가 그 이동을 살아남아야 해. 드래그가 픽셀을 복사하고 새 프로세스를 띄우면, 탭을 옮긴 게 아니야. 모습을 복제하고 일을 고아로 만든 거야.
그래서 지난 레슨이 판은 객체라고 고집했어. 객체는 부모를 바꿀 수 있어. 그림은 처음부터 다시 그려야 하고, 그건 새 PTY 고, 그건 자리 메우기 셸이고, 그건 한창이던 컴파일러는 옛 창에 남아 있고 새 창에서는 신선한 zsh 가 깜빡인다는 뜻이야. 터미널에서 산다는 건 일을 옮기는 거야. 옮기기가 복제면 옮기기를 그만두고, 첫 트랙의 기준이 날짜 있는 줄을 모으기 시작해.
자리 메우기 셸도, 합성 Enter 도 없어
PTY 를 데려가지 못하는 이동은 속이고 싶어져. 목적지에 셸을 띄우고, 옛 디렉터리로 cd 하고, 준비된 척하려고 Enter 를 합성하고. 그 속임수는 드래그 제스처를 입은 모델 모양 쓰기다. 새 판은 옛 일이 아니야. 닮은꼴이야. Smolder 는 닮은꼴을 거절해. 트리가 못 움직이면 드래그는 실패해. 프로세스를 지어내고 거기에 치지 않아.
합성 Enter 는 문 트랙이 Anvil 초안이랑 피파 제안에 붙일 죄랑 같아. 운영자가 안 누른 줄바꿈은 엉뚱한 것에 엉뚱한 뇌를 제출하는 길이야. 드래그는 운영자가 Enter 를 누른 게 아니야. 옮긴 탭의 목적지는 이미 있던 일 위에서 켜져야 해. 놀고, 기다리고, 지어낸 프롬프트와 경주하지 않고.
창을 건너도 주인은 하나
창 둘은 같은 데몬의 투영 둘이야. 그 사이로 탭을 옮기는 건 한 투영에서 다른 투영으로 트리를 다시 부모 맺는 거지, 프로세스를 새 주인에게 보내는 게 아니야. 데몬이 이미 PTY 를 소유했어. 앱은 어느 유리가 그걸 보여줄지를 다시 놓는 중이야. 두 번째 데몬을 시작하는 떼어내기는 두 번째 공장이고, 어느 창을 꺼도 모호해져. 누구의 일, 누구의 저널, 누구의 복원.
창 안 순서 바꾸기는 같은 사실의 작은 경우야. 탭 띠는 트리의 목록이야. 띠를 따라 제목을 끄는 건 목록 순서를 바꾸지, 프로세스 정체성을 바꾸지 않아. 순서가 픽셀로만 저장되면 복원은 어느 트리가 어느 것인지 몰라. 정체성은 객체를 타고 가서, 점심 먹고 돌아와도 옮긴 탭은 아직 자기 자신이야.