peektea, 터미널에서 파일 미리보기 지원

by DD
9시간 전
조회수 4

peektea는 터미널 기반 TUI 개발 프레임워크인 Bubble Tea를 활용하여 개발됨

분할 화면(Split-pane) 기능을 통해 파일 탐색과 내용 미리보기를 동시에 제공

이미지 파일 미리보기를 위해 chafa 도구와 연동하여 터미널 내 렌더링 지원

바이너리 파일은 텍스트 노이즈 대신 구분자 표시로 처리

Bubble Tea의 비동기 처리 모델 (tea.Cmd)

peektea는 Bubble Tea의 `tea.Cmd`를 활용하여 터미널 사용자 인터페이스(TUI)의 응답성을 유지함. 파일 로딩이나 이미지 렌더링과 같이 시간이 소요되는 작업은 메인 루프 외부에서 비동기적으로 실행되며, 완료 시 `previewMsg`를 통해 결과를 전달받음. 이를 통해 사용자는 파일 탐색을 계속하면서도 백그라운드에서 미리보기 로딩을 처리할 수 있어 전체적인 사용자 경험(User Experience)이 향상됨.

chafa를 이용한 터미널 이미지 렌더링

peektea는 chafa라는 터미널 이미지 뷰어를 사용하여 이미지 파일을 터미널 내에서 직접 렌더링함. chafa는 유니코드 문자(Unicode Characters)와 색상을 이용해 이미지를 표현하며, `--size` 옵션을 통해 지정된 패널 크기에 맞춰 이미지를 조정함. chafa가 설치되지 않은 경우, 사용자에게 설치를 안내하는 메시지를 표시하여 오류 발생 시에도 안정적인 사용자 경험을 제공함.

바이너리 파일 자동 감지 및 처리

텍스트 파일 미리보기 시 바이너리 파일이 잘못 로드되어 노이즈가 발생하는 것을 방지하기 위해, peektea는 파일의 처음 512바이트 내 널(Null) 바이트 존재 여부를 확인하는 휴리스틱을 사용함. 이는 `git diff`와 같은 도구에서 사용하는 표준적인 방식임. 바이너리 파일로 감지되면, 실제 내용 대신 `[binary file]`이라는 메시지를 표시하여 사용자에게 명확한 정보를 전달함.

동적 패널 크기 조절 및 UI 적응

peektea는 Bubble Tea의 `tea.WindowSizeMsg`를 통해 터미널 크기 변경을 감지하고, 이에 맞춰 좌측 파일 탐색 패널과 우측 미리보기 패널의 크기를 동적으로 조절함. 좌측 패널은 최소 너비(Minimum Width) 50자를 유지하면서 현재 디렉토리 내 가장 긴 파일 이름을 수용하도록 확장되며, 나머지 공간은 미리보기 패널이 차지함. 이러한 적응형 레이아웃(Adaptive Layout)은 다양한 터미널 환경에서 일관된 사용성을 보장함.

git-lrc: 커밋 단위 AI 코드 리뷰

본문에서 언급된 git-lrc는 마이크로 AI 코드 리뷰어로, 커밋 시점에 작동하여 코드 변경 사항을 분석함. AI가 코드를 빠르게 작성하는 장점 이면에 발생할 수 있는 로직 변경, 버그 유입 등의 문제를 프로덕션 환경에 배포되기 전에 미리 감지하는 것을 목표로 함. 60초 설정으로 간편하게 도입 가능하며, 무료 및 오픈 소스로 제공되어 개발자들의 피드백을 받고 있음.

peektea opens a second eye 👀 side-by-side file previews