Show GN: typeboard — 팀 내에서 필요한 터미널을 직접 만들기

2 weeks ago 28

개발 배경 (왜 만들었는가?) 현재 연구원에서 근무하면서 로그를 따라가고, 여러 셸을 오가며, 긴 출력 안에서 문자열을 찾는 일이 일상입니다. 그때마다 “탭으로 세션을 나누고, Ctrl/⌘+F로 바로 찾고 싶다”는 요구가 생겼고, 그걸 외부 앱의 블랙박스에 맡기기보다 PTY부터 창 크롬까지 한 저장소에서 직접 이어 보고 싶었습니다. macOS 기본 Terminal, Ghostty, Kitty, Alacritty 같은 터미널은 이미 충분히 좋습니다. 다만 그 제품들은 완성된 소비자용 앱에 가깝고, “탭·찾기를 내가 원하는 방식으로 붙이고, PTY 소유권과 창 크롬까지 코드를 읽으며 고친다”는 목적에는 맞지 않았습니다. 브라우저 터미널이나 exec만 감싼 데모는 vim·htop·컬러 프롬프트에서 바로 한계가 드러납니다. 그래서 연구원 업무에 필요한 터미널을 직접 만들게 되었습니다. typeboard는 역할을 이렇게 나눕니다. 진짜 PTY는 Rust(portable-pty)가 소유하고, 화면은 xterm.js가 그리며, 창·메뉴·신호등은 Tauri / AppKit이 담당합니다. macOS에서는 $SHELL -l 로그인 셸을 띄우고, 바이트는 IPC Channel로 오갑니다. 그외 docs/ 폴더에는 그동안 학습한 내용을 정리해 계속 올릴 예정입니다. Rust, Tokio / Axum, Bun, CS·보안 같은 노트는 앱이 import하는 매뉴얼이 아니라, 터미널을 만들면서 옆에 쌓아 두는 공부 기록입니다. 주요 기능 및 특징 실제 PTY: spawn / write / resize / 종료를 Rust가 관리. TERM_PROGRAM=typeboard. 웹뷰만의 가짜 셸이 아님 탭: ⌘T / +로 세션 추가, 포그라운드 프로세스 이름(htop, vim 등) 반영, 탭이 넘치면 … 번호 목차로 전환·닫기 찾기(Ctrl/⌘+F): 스크롤백 버퍼 검색, 대소문자 옵션, ⌘G / ⇧⌘G로 다음·이전, 매치 하이라이트 창: ⌘N·메뉴·Dock “New Window”로 창 여러 개, ⌘W는 탭 / ⇧⌘W는 창 맥 네이티브 크롬: 시스템 타이틀바(신호등 + user — -zsh — 80×24 형식 제목), 아래 얇은 탭 줄. 전체화면에서는 시스템 호버 바와 같은 타이틀 UI 기타: 글자 크기 줌·localStorage 기억, Homebrew 느낌의 검정·초록 테마, 셸 종료 후 아무 키로 재시작, 링크 클릭 열기 다른 터미널과 비교...

Read Entire Article