Prompt는 명령어를 일반 텍스트 편집기처럼 입력하고 수정할 수 있는 macOS·Linux용 터미널이다. 다만 현재 알파 소프트웨어로, 제작자는 불안정한 부분과 호환성을 깨는 변경, 간헐적인 충돌이 있을 수 있다고 경고한다.
터미널 명령줄에서 원하는 위치를 클릭하고 드래그해 텍스트를 선택할 수 있으며, 익숙한 단축키로 복사하고 붙여넣을 수 있다. 구문 강조, 여러 줄 명령, 명령 기록 검색, 백그라운드 터미널, 탭 완성 기능도 제공한다.
Prompt는 Rust로 작성됐으며 libghostty를 기반으로 한다. 프로젝트는 별도 설정이나 준비 없이 바로 사용할 수 있다고 설명한다.
내려받기와 실행
릴리스 빌드는 Apple Silicon을 탑재한 최신 macOS 두 버전을 지원한다.
DMG 파일은 임시 서명(ad-hoc signing)만 되어 있고 아직 공증(notarization)을 받지 않았다. macOS가 첫 실행을 차단하면 Prompt.app을 마우스 오른쪽 버튼으로 클릭해 ‘열기’를 선택한 뒤 확인해야 한다.
실행하려면 안정화 버전 Rust가 필요하다. Linux에서는 X11 또는 Wayland 창 시스템도 필요하다. 함께 제공되는 libghostty-vt 바인딩은 생성된 C 헤더를 사용하므로, C 컴파일러나 libclang은 VT 라이브러리를 다시 빌드하거나 바인딩을 재생성할 때만 필요하다.
cargo run --release
첫 실행 때 다음 파일과 디렉터리가 만들어진다.
~/.config/prompt/config.toml # 선택 설정
~/.config/prompt/shell/ # zsh/bash 통합 및 shim
~/.local/share/prompt/history.jsonl # 명령 기록
셸을 별도로 설정할 필요는 없다. Prompt는 다음 순서로 셸을 찾는다.
- Prompt 실행 파일 옆에 포함된 셸인
vendor/zsh/bin/zsh - 시스템의
zsh - 시스템의
bash $SHELL
zsh와 bash는 자동으로 통합 기능을 사용한다. 그 밖의 셸은 기본 전달 모드(classic-passthrough mode)로 실행되며, 이때 입력창은 해당 셸이 통합되지 않았다고 안내한다.
zsh 포함 및 VT 라이브러리 빌드
릴리스 빌드에 zsh를 실행 파일과 함께 넣으려면 다음 스크립트를 실행한다.
scripts/vendor-zsh.sh /usr # 또는 다른 zsh 설치 경로
스크립트는 bin/zsh, lib/zsh, share/zsh를 vendor/zsh로 복사한다. Prompt는 이 디렉터리 구성을 감지하고 zsh의 모듈·함수 검색 경로를 조정한 뒤 포함된 셸을 실행한다. 저장소에는 zsh 바이너리가 포함돼 있지 않으므로, 패키징 과정에서 이 스크립트를 실행하거나 정적 zsh를 빌드해야 한다.
x86_64 Linux용 사전 빌드 libghostty-vt는 vendor/ghostty-vt/에 포함돼 있다. macOS와 ARM Linux에서 사용하거나 Ghostty를 업데이트하려면 다음 스크립트로 해당 환경에 맞게 다시 빌드해야 한다.
scripts/build-ghostty-vt.sh
이 스크립트는 Zig 0.17.0과 Ghostty를 내려받아 C 라이브러리를 빌드하고, 헤더와 정적 라이브러리를 vendor/ghostty-vt/에 복사한다. 실행에는 curl, tar, 네트워크 연결이 필요하다. src/ghostty_bindings.rs는 포함된 헤더를 바탕으로 미리 생성돼 있다. Ghostty 버전을 바꾸면 bindgen으로 바인딩을 다시 생성해야 한다.
macOS에서도 winit, softbuffer, cosmic-text를 사용하는 같은 Rust 구성 요소를 쓴다. macOS용으로 별도 빌드해야 하는 것은 Ghostty 정적 라이브러리뿐이다.
키보드와 선택 조작
Prompt는 macOS와 Linux를 모두 고려해 설계됐다. 아래 표에서 Cmd는 macOS의 Cmd, Ctrl은 Linux의 Ctrl을 뜻한다.
| 동작 | macOS | Linux |
|---|---|---|
| 명령 실행 | Enter | Enter |
| 새 줄 입력 | Shift+Enter | Shift+Enter |
| 이전·다음 기록 또는 완성 항목 | Up / Down | Up / Down |
| 기록 검색 | Cmd+R | Ctrl+R |
| 제안 완성·순환 | Tab / Shift+Tab | Tab / Shift+Tab |
| 제안 수락 | 줄 끝에서 Right | 줄 끝에서 Right |
| 복사 | Cmd+C (실행 중인 프로그램에서는 Ctrl+Shift+C) | Ctrl+Shift+C |
| 붙여넣기 | Cmd+V | 입력창에서는 Ctrl+V, 프로그램 실행 중에는 Ctrl+Shift+V |
| 잘라내기 | Cmd+X | Ctrl+X |
| 모두 선택 | Cmd+A | Ctrl+A |
| 실행 취소·다시 실행 | Cmd+Z / Cmd+Shift+Z | Ctrl+Z / Ctrl+Shift+Z |
| 단어 단위로 왼쪽·오른쪽 이동 | Option+←/→ | Ctrl+←/→ |
| 줄 시작·끝으로 이동 | Cmd+←/→ | Home / End |
| 단어 삭제 | Option+Backspace | Ctrl+Backspace |
| 줄 시작까지 삭제 | Cmd+Backspace | Ctrl+U |
| 실행 중단·줄 지우기 | Ctrl+C | Ctrl+C |
| 화면 지우기 | Cmd+K | Ctrl+L |
| 터미널 스크롤 | Shift+PageUp/Down, 휠 | 동일 |
| 이전·다음 명령 블록 | Cmd+Shift+↑/↓ | Ctrl+Shift+↑/↓ |
| 블록 보기 열기·닫기 | Cmd+Shift+B | Ctrl+Shift+B |
| 실행 중인 명령을 백그라운드로 이동 | Cmd+Shift+D | Ctrl+Shift+D |
| 전체 화면 | F11, Cmd+Ctrl+F | F11 |
| 글꼴 확대·축소 | Cmd+= / Cmd+- / Cmd+0 | Ctrl+= / Ctrl+- / Ctrl+0 |
터미널 격자에서는 클릭하고 드래그해 텍스트를 선택할 수 있다. 단어를 두 번 클릭하면 단어를, 줄을 세 번 클릭하면 줄 전체를 선택하고 복사할 수 있다. TUI에서 마우스 보고 기능을 켜면 Prompt는 클릭, 버튼을 놓는 동작, 휠 이벤트를 전달한다. 이때 Shift를 누르면 대신 텍스트를 선택한다.
블록 보기에서는 [와 ]로 블록 사이를 이동하고, g와 G로 맨 위나 맨 아래로 이동한다. e는 긴 블록을 펼치며, /는 블록 안을 검색한다. n과 N으로 검색 결과를 이동하고 Esc를 누르면 터미널로 돌아간다.
설정과 테스트
첫 실행 때 ~/.config/prompt/config.toml이 만들어진다. 모든 설정에는 기본값이 있으며, 이 파일을 삭제하면 설정을 초기 상태로 되돌릴 수 있다.
[appearance]
font_family = "" # 비워 두면 설치된 고정폭 글꼴 중 적절한 글꼴을 선택
font_size = 14.0
line_height = 1.38
[behavior]
shell = "" # 비워 두면 자동 감지
scrollback_lines = 10000
copy_on_select = false
[ui]
show_hints = true
inline_suggestions = true # 흐리게 표시되는 완성 미리보기, Tab으로 수락
start_maximized = false
window_width = 1080
window_height = 700
테스트는 다음 명령으로 실행한다.
cargo test
테스트 모음은 편집기 모델, 셸 구문 강조, 명령 기록, libghostty-vt 통합 기능을 다룬다. 여기에는 화면, 선택, 크기 변경, 의미 기반 프롬프트, 키 인코딩 테스트가 포함된다. 또한 PTY를 통해 zsh와 bash의 프롬프트 마커를 실제로 왕복하는 테스트도 포함한다.
화면이 뜨는지 확인하는 UI 스모크 테스트에는 개발 환경용 훅 두 가지를 사용할 수 있다.
DISPLAY=:99 PROMPT_SCREENSHOT=/tmp/shot.png PROMPT_EXIT_AFTER_SCREENSHOT=1 \
cargo run --release
# 첫 프롬프트가 표시된 뒤 명령을 자동으로 실행
PROMPT_AUTOTYPE='echo hello' PROMPT_AUTOTYPE_DELAY=1200 ...
라이선스
Ghostty는 MIT 라이선스로 제공된다. 자세한 내용은 vendor/ghostty-vt/LICENSE와 THIRD_PARTY.md를 참고하면 된다. Prompt 자체도 MIT 라이선스로 제공되며, 자세한 내용은 LICENSE에 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요