www.git

www

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

content/projects/ommp.md (3587B)

      1 +++
      2 title = "ommp"
      3 description = "A standalone terminal music player built with Rust. No MPD, no daemon."
      4 weight = 20
      5 date = 2026-08-01
      6 
      7 [extra]
      8 tier = "landing"
      9 
     10 eyebrow  = "Terminal music player · Rust"
     11 tagline  = "Most terminal music players are a client for something else you have to start first. ommp is the whole thing: run it, and it plays. Quit it, and nothing is left running."
     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 = "Website", url = "https://ommp.sqzer.com",            style = "primary" },
     24   { label = "Source",  url = "https://github.com/sqzer-x/ommp",   style = "ghost"   },
     25 ]
     26 
     27 facts = [
     28   { value = "8",           label = "Audio formats" },
     29   { value = "3",           label = "Image protocols" },
     30   { value = "0",           label = "Daemons to start" },
     31   { value = "Apache-2.0",  label = "License" },
     32 ]
     33 
     34 features_eyebrow = "Capabilities"
     35 features_title   = "A library browser, a queue, and the artwork"
     36 features_intro   = "Three panels. The left browses, the centre queues, the right shows the cover and the track."
     37 # 항목은 아래 [[extra.features]] 에 있다. 인라인 테이블은 TOML 1.0 에서
     38 # 한 줄을 넘지 못하고, 이 설명들은 한 줄에 들어가지 않는다.
     39 
     40 session_eyebrow = "Install"
     41 session_title   = "One command, then your music"
     42 session_shell   = "zsh"
     43 session_caption = "Needs a Nerd Font for the interface icons and a true-colour terminal."
     44 session_lines = [
     45   { kind = "cmd",     text = "$ cargo install ommp" },
     46   { kind = "comment", text = "# on Arch:  yay -S ommp" },
     47   { kind = "cmd",     text = "$ ommp" },
     48   { kind = "comment", text = "# reads ~/Music, scans subdirectories, picks up changes as they happen" },
     49   { kind = "out",     text = "  Ctrl+S   search      artist:  album:  genre:  *.flac" },
     50   { kind = "out",     text = "  Ctrl+H   keybindings" },
     51 ]
     52 
     53 cta_title = "Put your music in ~/Music and run it."
     54 cta_text  = "Nothing to configure. Album art comes out of the tags in the files themselves."
     55 cta_actions = [
     56   { label = "ommp.sqzer.com", url = "https://ommp.sqzer.com",          style = "primary" },
     57   { label = "Source",         url = "https://github.com/sqzer-x/ommp", style = "ghost"   },
     58 ]
     59 
     60 [[extra.features]]
     61 title = "Eight formats"
     62 desc  = "FLAC, MP3, M4A, OGG, WAV, Opus, AAC and WMA, through PulseAudio or ALSA."
     63 
     64 [[extra.features]]
     65 title = "Album art, actually drawn"
     66 desc  = "Kitty graphics, Sixel or the iTerm2 protocol, detected at startup. Everywhere else it falls back to block characters, which still shows the cover."
     67 
     68 [[extra.features]]
     69 title = "Browse how you think"
     70 desc  = "By artist, album, genre, format, directory or playlist. The tabs across the top switch the left panel."
     71 
     72 [[extra.features]]
     73 title = "Field search"
     74 desc  = "Ctrl+S filters as you type. artist:radiohead, album:ok computer, genre:rock, or *.flac."
     75 
     76 [[extra.features]]
     77 title = "It remembers"
     78 desc  = "Volume, playlists and pane layout survive a restart, and the library re-syncs when files appear or vanish."
     79 
     80 [[extra.features]]
     81 title = "Mouse, if you want it"
     82 desc  = "Click, scroll, and drag the panes to resize. The keyboard does everything too — Ctrl+H lists the bindings."
     83 
     84 +++
     85 
     86 Album art is read from the tags in the audio files, so there is nothing to place
     87 alongside them. Which drawing protocol your terminal supports is worked out at
     88 startup — Ghostty, Kitty, WezTerm and Konsole get real images; foot and xterm
     89 built with Sixel do too.