Whetuu: 제로‑구성 크로스‑쉘 프롬프트 (Zig로 작성)
Whetuu: 제로‑구성 크로스‑쉘 프롬프트 (Zig로 작성)
Whetuu는 Zig로 작성된 제로‑구성, 크로스‑쉘 프롬프트로, 높은 성능과 최소 설정을 목표로 합니다. Git 상태, 툴체인 버전, 명령 실행 시간을 추적하는 동적 프롬프트를 제공하며, 위쪽 화살표로 트리거되는 디렉터리‑인식 히스토리 피커를 통합합니다.
고성능 프롬프트 렌더링
Whetuu는 표준 환경에서 약 2 ms에 렌더링되어 쉘이 반응성을 유지합니다. 이 속도를 달성하기 위해 디스크를 읽는 모든 모듈이 std.Io를 통해 동시에 실행되며, 전체 렌더링 시간은 모든 탐색을 합산한 것이 아니라 가장 오래 걸리는 단일 탐색에 의해 제한됩니다.
13세대 i9‑13900H (ReleaseFast)에서의 성능 벤치마크:
- 레포 없음, 툴체인 없음: 2.3 ms
- Zig 레포 (35 파일): 3.0 ms
- 모노레포 (8,259 파일): 20.2 ms
느린 레포지토리 때문에 쉘이 멈추는 것을 방지하기 위해 Whetuu는 엄격한 타임아웃을 적용합니다. Git 서브프로세스는 250 ms, 툴체인 탐색은 200 ms로 제한됩니다. 제한을 초과하면 해당 세그먼트는 프롬프트에서 단순히 제외됩니다.
통합 디렉터리‑인식 히스토리 피커
Whetuu는 기본 위쪽 화살표 히스토리 동작을 인터랙티브 피커로 교체합니다. 이 피커는 기본적으로 현재 디렉터리 범위에 한정되며, 디렉터리‑특정 명령이 없을 경우에만 전역 히스토리를 사용합니다.
히스토리 피커의 주요 기능:
- 깨끗한 히스토리: 정상 종료된 명령만 기록되어 오타가 리스트를 어지럽히지 않습니다.
- 프라이버시: 앞에 공백이 있는 명령은 절대 기록되지 않습니다.
- 구문 강조: 터미널 테마에 맞춰 명령이 강조되며, 긴 명령은 중간을 잘라 고유한 접두사와 접미사를 유지합니다.
- 네비게이션: 입력으로 필터링(대소문자 구분 없음)하고,
Ctrl+G로 디렉터리와 전역 히스토리를 전환하며,Tab으로 선택을 편집하고Enter로 실행합니다.
동적 프롬프트 모듈
프롬프트는 현재 상황에 맞는 세그먼트만 표시합니다:
- User/Host: SSH 연결 시 굵은 초록색, root일 경우 굵은 빨간색으로 경고 표시합니다.
- Directory: 현재 디렉터리를
$HOME을~로 축약해 표시하고, 가능한 많은 뒤쪽 디렉터리를 포함하도록 경로를 고정합니다. - Git Branch: 브랜치 이름 또는
(detached)를 마젠타 색으로 표시합니다. - Git State: 리베이스, 머지, 체리‑픽 등 활성 작업을 노란색으로 표시합니다. 이는 서브프로세스를 실행하지 않고
.git에서 직접 읽어옵니다. - Git Status: 충돌, 스태시, 스테이징, 수정, 추적되지 않음, 앞/뒤 상태를 하나의 대괄호 그룹으로 묶어 표시합니다.
- Language Detection: 프로젝트 매니페스트, 소스 파일 확장자, 인프라 마커 등을 통해 39개의 언어·툴을 감지하고 로고와 버전을 표시합니다.
- Language Branding: 프롬프트 문자(별표)는 감지된 언어의 브랜드 색을 사용합니다.
- Command Duration: 이전 명령이 2초 이상 실행됐을 경우 타이머 아이콘과 경과 시간이 표시됩니다.
보안 및 데이터 프라이버시
Whetuu는 "당신의 머신을 떠나는 것이 없다"는 철학으로 설계되었습니다. 네트워크 소켓, HTTP 클라이언트, 텔레메트리, 업데이트 체크가 전혀 없습니다.
데이터 관리 원칙:
- 스토리지: Whetuu는 두 개의 파일만 씁니다: 히스토리 저장소(모드 600)와
~/.cache/whetuu/versions에 위치한 툴체인 버전 캐시. 두 파일 모두 XDG 베이스 디렉터리 사양을 따릅니다. - 쉘 통합: 설치 프로그램은 활성 쉘(
$SHELL) 설정에 두 줄만 추가하고 그 외에는 아무것도 하지 않습니다. - 입력 안전: 브랜치 이름이나 디렉터리 이름에 포함된 제어 바이트는
?로 변환해 터미널 이스케이프 시퀀스 공격을 방지합니다. - 실행: Whetuu는
git과 툴체인 탐색을 고정 인수로 서브프로세스에서 실행하므로 사용자 입력이 명령으로 해석되지 않습니다.
설치 및 요구 사항
Whetuu는 Git 브랜치, 언어 로고, 프롬프트 문자에 사용되는 글리프를 렌더링하기 위해 Nerd Font가 필요합니다. Nerd Font가 없으면 해당 요소가 빈 상자로 표시됩니다.
설치는 한 줄 명령으로 처리됩니다:
curl --proto '=https' --tlsv1.2 -fsSL https://yamafaktory.github.io/whetuu/install.sh | sh
수동 구성을 원하는 사용자는 WHETUU_NO_MODIFY=1을 지정해 설치 프로그램이 도트파일을 수정하는 대신 필요한 설정 라인을 출력하도록 할 수 있습니다.
커뮤니티 피드백
성능과 히스토리 피커에 대한 찬사가 많지만, 일부 사용자는 도구의 의견적 성격과 설치 방식에 대해 우려를 표했습니다:
"프롬프트가 쉘 히스토리까지 관리하길 원하지 않아요... $HOME에 디렉터리를 만들지 말아 주세요."
또 다른 사용자는 스크립트를 직접 파이프하는 설치 방식에 대해 보안 커뮤니티에서 흔히 제기되는 문제를 지적했습니다:
"bash나 sh에 바로 파이프하지 말고, 에디터로 스크립트를 읽고, 어떻게 실행할지 알려 주세요."
이름의 어원에 대해 한 사용자는 이 이름이 마오리어에서 유래했으며, "wh"는 "f" 소리(FEH‑too)로 발음되고, "ū"의 마크론은 장모음을 나타낸다고 설명했습니다.
요약: Whetuu는 Zig로 작성된 고성능, 제로‑구성 크로스‑쉘 프롬프트로, 통합 히스토리 피커와 39개 언어에 대한 자동 툴체인 감지를 제공합니다.
제목: Whetuu: 제로‑구성 크로스‑쉘 프롬프트 (Zig로 작성)