실제 TUI 앱은 어느 추상화 계층에 서 있나 — fzf부터 OpenCode까지
fzf, btop, lazygit, Yazi, Harlequin, OpenCode, Neovim을 실제 구현 선택 기준으로 비교해 자체 렌더러, 중간 라이브러리, 고수준 프레임워크의 차이를 정리한다.
fzf, btop, lazygit, Yazi, Harlequin, OpenCode, Neovim을 실제 구현 선택 기준으로 비교해 자체 렌더러, 중간 라이브러리, 고수준 프레임워크의 차이를 정리한다.
Bubble Tea, Ratatui, Textual, OpenTUI를 기능표가 아니라 이벤트 루프, 상태, 레이아웃, 렌더러, 컴포넌트의 추상화 수준으로 비교한다.
curses 이후 현대 TUI 프레임워크를 관통하는 입력 이벤트 → 상태 갱신 → 레이아웃 → 셀 버퍼 → 차이 렌더링 구조를 Ratatui와 OpenTUI 사례로 정리한다.
escape sequence와 terminfo를 직접 다루던 단계에서 curses/ncurses가 화면, 창, refresh, getch 같은 추상화를 제공하며 TUI 개발 방식을 어떻게 바꿨는지 정리한다.
TERM, termcap, terminfo, tput의 관계를 통해 터미널 capability database가 왜 필요했고 curses와 현대 TUI의 호환성 계층에 어떻게 연결되는지 정리한다.
TUI 앱이 픽셀 대신 표준 출력의 escape sequence로 커서 이동·화면 지우기·색상·alternate screen을 제어하는 원리를 직접 printf로 실험하며 정리한다.
터미널 입력을 처리하는 termios의 역할과 canonical/raw mode, echo, ISIG, VMIN/VTIME을 직접 실험하며 Neovim·fzf 같은 TUI가 키 입력을 즉시 받는 원리를 정리한다.
물리 터미널에서 터미널 에뮬레이터와 PTY로 이어지는 구조를 따라가며, Ghostty·셸·tmux·Neovim이 실제로 어떻게 연결되는지 정리한다.
터미널을 단순한 명령창이 아니라 하나의 입출력·렌더링 스택으로 이해하기 위한 학습 지도. TTY/PTY, termios, ANSI/VT, terminfo, curses를 거쳐 현대 TUI 프레임워크와 실제 애플리케이션 구조까지 바닥부터 올라간다.
터미널 사용자 인터페이스(TUI)의 역사와 CLI와의 차이, ncurses에서 Bubble Tea·Ratatui·Textual·OpenTUI로 이어지는 현대 TUI 프레임워크의 흐름을 정리한다.