www.git

www

~ Personal site — projects, posts, about. Built with sqzass.
git clone https://github.com/debuman/www.git

content/projects/ommp.ko.md (3903B)

      1 +++
      2 title = "ommp"
      3 description = "Rust 로 만든 터미널 음악 재생기. MPD 도 데몬도 없다."
      4 weight = 20
      5 date = 2026-08-01
      6 
      7 [extra]
      8 tier = "landing"
      9 
     10 eyebrow  = "터미널 음악 재생기 · Rust"
     11 tagline  = "터미널 음악 재생기는 대개 먼저 띄워 둬야 하는 무언가의 클라이언트다. ommp 는 그 전부다. 실행하면 재생되고, 끄면 남는 것이 없다."
     12 lang     = "Rust"
     13 license  = "Apache-2.0"
     14 version  = ""
     15 platform = "Linux"
     16 repo     = "https://github.com/sqzer-x/ommp"
     17 stars    = 0
     18 accent     = "#7fc0d4"
     19 mark     = ""
     20 logo     = ""
     21 
     22 actions = [
     23   { label = "웹사이트", url = "https://ommp.sqzer.com",          style = "primary" },
     24   { label = "소스",     url = "https://github.com/sqzer-x/ommp", style = "ghost"   },
     25 ]
     26 
     27 facts = [
     28   { value = "8",           label = "오디오 형식" },
     29   { value = "3",           label = "이미지 프로토콜" },
     30   { value = "0",           label = "띄울 데몬" },
     31   { value = "Apache-2.0",  label = "라이선스" },
     32 ]
     33 
     34 features_eyebrow = "기능"
     35 features_title   = "라이브러리, 재생 목록, 그리고 앨범 아트"
     36 features_intro   = "화면은 세 칸이다. 왼쪽이 훑고, 가운데가 줄을 세우고, 오른쪽이 표지와 지금 곡을 보여 준다."
     37 # 항목은 아래 [[extra.features]] 에 있다. 인라인 테이블은 TOML 1.0 에서
     38 # 한 줄을 넘지 못하고, 이 설명들은 한 줄에 들어가지 않는다.
     39 
     40 session_eyebrow = "설치"
     41 session_title   = "명령 하나, 그다음이 음악"
     42 session_shell   = "zsh"
     43 session_caption = "인터페이스 아이콘에 Nerd Font 가, 색에 24비트 지원 터미널이 필요하다."
     44 session_lines = [
     45   { kind = "cmd",     text = "$ cargo install ommp" },
     46   { kind = "comment", text = "# Arch 라면:  yay -S ommp" },
     47   { kind = "cmd",     text = "$ ommp" },
     48   { kind = "comment", text = "# ~/Music 을 읽고 하위 디렉터리까지 훑는다. 바뀌면 바로 따라간다" },
     49   { kind = "out",     text = "  Ctrl+S   검색        artist:  album:  genre:  *.flac" },
     50   { kind = "out",     text = "  Ctrl+H   키 목록" },
     51 ]
     52 
     53 cta_title = "~/Music 에 음악을 두고 실행하면 됩니다."
     54 cta_text  = "설정할 것이 없다. 앨범 아트는 파일 안의 태그에서 나온다."
     55 cta_actions = [
     56   { label = "ommp.sqzer.com", url = "https://ommp.sqzer.com",          style = "primary" },
     57   { label = "소스",           url = "https://github.com/sqzer-x/ommp", style = "ghost"   },
     58 ]
     59 
     60 [[extra.features]]
     61 title = "여덟 가지 형식"
     62 desc  = "FLAC, MP3, M4A, OGG, WAV, Opus, AAC, WMA 를 PulseAudio 나 ALSA 로 낸다."
     63 
     64 [[extra.features]]
     65 title = "앨범 아트를 실제로 그린다"
     66 desc  = "Kitty 그래픽, Sixel, iTerm2 프로토콜 중 되는 것을 시작할 때 알아서 고른다. 아무것도 없으면 블록 문자로 떨어지는데, 그래도 표지는 보인다."
     67 
     68 [[extra.features]]
     69 title = "생각하는 대로 훑는다"
     70 desc  = "아티스트, 앨범, 장르, 형식, 디렉터리, 재생 목록. 위쪽 탭이 왼쪽 칸을 바꾼다."
     71 
     72 [[extra.features]]
     73 title = "필드 검색"
     74 desc  = "Ctrl+S 를 누르면 치는 대로 걸러진다. artist:radiohead, album:ok computer, genre:rock, *.flac."
     75 
     76 [[extra.features]]
     77 title = "기억한다"
     78 desc  = "음량과 재생 목록과 칸 배치가 다시 켜도 그대로고, 파일이 생기거나 사라지면 라이브러리가 따라간다."
     79 
     80 [[extra.features]]
     81 title = "마우스도 쓴다"
     82 desc  = "누르고 굴리고 끌어서 칸 크기를 바꾼다. 키보드로도 전부 되고, Ctrl+H 가 목록을 보여 준다."
     83 
     84 +++
     85 
     86 앨범 아트는 음악 파일의 태그에서 읽으므로 옆에 따로 둘 것이 없다. 터미널이 어떤
     87 그리기 프로토콜을 지원하는지는 시작할 때 알아낸다. Ghostty, Kitty, WezTerm,
     88 Konsole 은 실제 이미지가 나오고, foot 과 Sixel 을 켜서 빌드한 xterm 도 그렇다.