
그 시절 Winamp를 기억하시나요?
2000년대 초반 컴퓨터를 쓰셨던 분이라면 Winamp를 기억하실 거예요. 그 특유의 스킨, 이퀄라이저, 그리고 "Winamp, it really whips the llama's ass!"라는 시작 사운드까지. 음악 플레이어의 아이콘이었던 Winamp의 감성을 터미널 환경으로 가져온 프로젝트가 있어요. 바로 CLIamp인데요, 이름에서 알 수 있듯이 CLI(Command Line Interface) + Winamp을 합친 레트로 감성의 터미널 음악 플레이어예요.
CLIamp은 어떤 프로젝트인가요?
CLIamp은 터미널에서 실행되는 음악 플레이어인데, 단순히 "파일을 재생한다" 수준이 아니에요. Winamp에서 영감받은 텍스트 기반 UI(TUI)를 갖추고 있어서, 터미널 안에서 플레이리스트 관리, 재생 컨트롤, 진행 바 표시 같은 기능을 시각적으로 보여줘요. 터미널 특유의 모노스페이스 폰트와 ASCII 아트 스타일이 어우러져서 레트로한 분위기를 물씬 풍기는 게 특징이에요.
Rust로 작성되어 있어서 바이너리 하나로 가볍게 실행할 수 있고, 크로스 플랫폼을 지원해요. MP3, FLAC, WAV 같은 주요 오디오 포맷을 지원하고, 디렉토리 단위로 음악 파일을 불러와서 재생할 수 있어요.
기술적으로 들여다보면
Rust 생태계의 여러 크레이트를 활용해서 만들어졌는데요, TUI 렌더링에는 ratatui를 사용했어요. ratatui는 Rust에서 터미널 UI를 만들 때 가장 널리 쓰이는 라이브러리 중 하나로, 이전에 tui-rs라는 이름이었다가 커뮤니티 주도로 포크된 프로젝트예요. 오디오 재생은 rodio 크레이트를 사용하고 있고요.
이 프로젝트의 아키텍처가 재미있는 게, 터미널 UI 스레드와 오디오 재생 스레드가 분리되어 있어요. 이게 왜 중요하냐면, 음악을 재생하면서 동시에 UI를 업데이트하려면 두 작업이 서로 블로킹하지 않아야 하거든요. Rust의 소유권 시스템과 채널(channel) 기반 메시지 전달을 활용해서 이 동시성 문제를 깔끔하게 해결하고 있어요. 멀티스레딩에서 흔히 발생하는 데이터 레이스(data race) 같은 문제를 컴파일 타임에 방지할 수 있는 Rust의 강점이 잘 드러나는 부분이에요.
키보드 입력 처리도 눈여겨볼 만해요. 터미널 환경에서 키 입력을 받으려면 터미널을 raw 모드로 전환해야 하는데, 이때 crossterm 크레이트를 사용해서 플랫폼별 차이를 추상화하고 있어요. macOS, Linux, Windows 어디서든 같은 키 입력이 동일하게 동작하도록 처리한 거죠.
TUI 앱 개발이 요즘 왜 주목받을까?
최근 개발자 도구 생태계에서 TUI 앱이 다시 인기를 끌고 있어요. lazygit(Git TUI), btop(시스템 모니터), yazi(파일 매니저) 같은 TUI 도구들이 많은 개발자들에게 사랑받고 있죠. 이유가 몇 가지 있는데요.
첫째, SSH로 원격 서버에 접속해서 작업할 때 GUI 앱은 쓸 수 없지만 TUI 앱은 바로 실행할 수 있어요. 둘째, 키보드만으로 모든 조작이 가능하니까 손이 키보드에서 떠날 필요가 없어요. 셋째, 리소스 사용량이 극히 적어서 어떤 환경에서든 가볍게 돌릴 수 있고요. 그리고 무엇보다, 텍스트 기반 인터페이스가 주는 특유의 미니멀한 미학이 있어요.
Rust가 이 분야에서 특히 두각을 나타내는 이유는, ratatui 같은 성숙한 TUI 라이브러리가 있고, 빠른 실행 속도와 낮은 메모리 사용량이 TUI 앱의 특성과 잘 맞기 때문이에요. 단일 바이너리로 배포할 수 있다는 것도 큰 장점이고요.
한국 개발자에게 주는 시사점
CLIamp 자체를 일상적으로 쓰는 것도 좋지만, 이 프로젝트의 더 큰 가치는 Rust로 TUI 앱을 만드는 방법을 배울 수 있는 좋은 레퍼런스라는 점이에요. 코드 규모가 크지 않아서 전체를 읽어볼 수 있고, ratatui + rodio + crossterm이라는 조합은 다른 TUI 프로젝트에도 그대로 응용할 수 있거든요.
Rust를 배우고 있는데 "뭘 만들어볼까" 고민 중이라면, 이런 TUI 프로젝트가 좋은 시작점이 될 수 있어요. 웹 프레임워크보다 진입 장벽이 낮고, 결과물이 바로 눈에 보이니까 성취감도 크고요. 특히 ratatui의 위젯 시스템은 React의 컴포넌트와 비슷한 개념이라, 프론트엔드 경험이 있는 분이라면 금방 적응할 수 있을 거예요.
한줄 정리
Winamp 감성을 터미널로 가져온 CLIamp은, 레트로 음악 플레이어이자 Rust TUI 개발을 배우기에 딱 좋은 오픈소스 프로젝트예요.
여러분은 터미널에서 즐겨 쓰는 TUI 도구가 있으신가요? 혹시 직접 만들어본 TUI 앱이 있다면 공유해주세요!
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공