Ratatui 메인테이너, 셀 가장자리에 선을 긋는 터미널 프로토콜을 Ghostty 패치로 공개
- Ratatui 메인테이너 joshka가 박스 드로잉 문자 대신 셀 가장자리에 얇은 선을 긋는 터미널 프로토콜을 제안하고 Ghostty 패치와 Ratatui 데모 앱으로 구현함. 앞서 Rio PR #1947에도 초기 버전을 올렸음
- 유니코드 박스 드로잉 블록은 U+2500-U+257F에 128개 문자가 있는데도 부족함. 문자는 셀 하나를 통째로 차지해서 내용이 들어 있는 두 셀 사이에 선을 긋거나 텍스트 필드 바로 밑에 밑줄을 붙일 수 없음
- 16인치 노트북에서 터미널은 대략 200x50인데, 패널을 두세 단 중첩하면 50줄 가운데 6~8줄을 선 그리는 데 씀
- 셀 테두리가 없는 터미널로 떨어지면 패널마다 사방으로 한 줄, 한 칸씩 잃어서 로그 창이 두 줄 줄고 탭 라벨이 프레임 안으로 들어가며 버튼이 대괄호로 바뀜
- btop식 브라유 그래프는 모든 셀을 점으로 채워서 격자선이나 평균선을 넣을 자리가 없는데, 셀 테두리를 쓰면 점 사이 셀 경계에 그릴 수 있음
Hacker News opinions
TUI 쪽에서 이런 실험 하는 건 반갑긴 한데, 미학적으로 나는 테두리에 여백이 좀 있어야 한다고 봄. 이 방식은 그 여백이 완전히 사라져서 좀 답답해 보임.
테두리가 셀을 먹으면 아껴 쓰게 되니까 오히려 그게 낫다고 봄. 요즘 LLM이 만든 웹사이트는 버튼이고 라벨이고 죄다 둥근 사각형으로 감싸서 너무 시끄럽고, 이 글에 나오는 'wire format' 같은 표현도 딱 그런 냄새임. 탐구 자체는 재밌는데 문체는 좀 아쉽다.
복사 붙여넣기 할 때 테두리랑 선이 같이 딸려오지 않게만 해줬으면 좋겠음.
이 작업 좋아하는데 진짜 궁금한 게 있음. 터미널 프로토콜이랑 터미널 자체를 고칠 거면 왜 dumb terminal 한계를 복제하는 선에서 멈추지? 정보 밀도 높은 모노스페이스 UI 프레임워크를 만들 수도 있었잖아.
키 입력마다 서버를 왕복하는 텍스트 터미널은 호환성 말고는 합리적인 이유가 없음. 설계하기도 짜증나고 성능은 더 심하고.
나도 그걸 하고 있음. 터미널을 떠나려고 GPUI 같은 걸 쓰다가 결국 터미널로 돌아왔는데, Kitty 이미지처럼 APC 이스케이프로 커스텀 UI 컴포넌트를 그리는 터미널을 만들었음. 에디터가 페이지를 나누고 tty가 그 안에서 스크롤하니까 진짜 부드러운 스크롤이 되고, 팝업 문서만 폰트 크기를 다르게 하는 것도 됨. 데일리로 쓰는 중인데 바이브 코딩 산물이라 링크는 안 올림.
나는 CLI랑 TUI의 제약 때문에 일부러 쓰는 쪽임. 풀 기능 UI가 필요하면 QT나 GTK, 요즘 HTML 쓰면 되지. 내가 원하는 개선은 스트림별 메타데이터나 원시 바이트 대신 구조화된 데이터로 통신하는 정도임.
그것도 하려고 함. 셀 단위 호환성 때문에 접근성, 줄바꿈, 스크롤백이 다 망가져 있고, Codex나 Gemini, Claude 이슈 트래커에 깜빡임이나 스크롤, IME 문제가 몇 달치씩 쌓여 있음. 시맨틱 레이어를 새로 얹는 쪽이 맞다고 봄.
그럴 시간에 모노스페이스 강제하는 CSS 프레임워크에 키 입력 버퍼링하는 JS 붙이면 border: solid 0.1rem 하나로 끝나는 거 아님?
그러다 웹처럼 괴물이 됨. 터미널이 잘 도는 이유는 프로토콜에 뭘 추가하는 비용이 커서 단순하게 유지되고, 그래서 구현체 여러 개가 굴러가기 때문임. 구글 자본 없으면 제대로 구현도 못 하는 웹꼴 나지 않으려면.
아예 모노스페이스를 버리는 쪽으로 더 야심차게 가자.
매일 조금씩 emacs에 가까워지고 있음.
나도 비슷한 걸 찾는 중인데 TUI마다 색 팔레트가 따로인 것도 싫어서 친구가 터미널이랑 SSH 위에서 도는 프로토콜을 만듦. SPA가 터미널 안 샌드박스에서 Lua로 돌아서 사용자 팔레트를 그대로 따름.
결국 X11 감싸서 모노스페이스 폰트로 문자 그리드 띄우는 라이브러리를 원하는 거네.
터미널을 처음부터 새로 설계한 발표가 있으니 찾아봐.
그냥 SSH로 HTML 던지고 브라우저가 제대로 렌더링하게 하면 안 되나. 해킹 위에 해킹 쌓는 것보다 낫지.
HTML은 애초에 UI용으로 만든 게 아니라 해킹 덩어리임. 위젯이랑 이벤트를 스트림으로 주고받는 프로토콜이 있었으면 이런 논쟁도 없었을 텐데.
보안 측면에서도 안 좋음. 브라우저를 원격 UI 런타임으로 쓰는 건 공격 면만 늘어남.