📻 scalably stream your fav radios at the comfort of your terminal. no bloat allowed https://bloomingchad.github.io/pnimrp/
Find a file
2025-05-18 13:50:16 +05:30
.github/workflows
assets fix: assets/orthodox: add , for middle element in json 2025-05-18 13:50:16 +05:30
doc
src
tools
web
.gitignore
config.nims
index.html
LICENSE
NOTICE
pnimrp.nim
pnimrp.nimble
README.md

pnimrp Icon

♪♫ pnimrp - Poor Man's Radio Player in Nim ♫♪

sick of opening chrome just to stream some internet radio? i made this little terminal radio player that's saved me tons of ram

with a collection of over 700 radio stations, curated and modifiable, you can play your favorite stations all from the comfort of your terminal

inspired by poor man's radio player, pnimrp aims to extend pmrp whilst keeping familiarity.

Windows Debian AntiX
Ubuntu Termux
FreeBSD NetBSD
OpenIndiana
Haiku

🎥 demo

pnimrp demo

made with asciinema

🌟 key features

  • portable: works on unix and windows
  • easy to use: simple intuitive interface
  • curatable stations: edit json files to add or remove stations easily
  • now playing: displays the currently playing song
  • lightweight: minimal dependencies, fast and efficient
  • customizable themes: easily switch between themes by editing config.json
  • checked links: links get checked automatically so you dont waste your time.

⬇️ installation

step 1: install mpv (might need development build/files)

pnimrp uses mpv for audio playback. install both the mpv player and its development files

Linux:

  • Debian/Ubuntu: sudo apt install mpv libmpv-dev
  • Fedora/CentOS/RHEL: sudo dnf install mpv mpv-devel (may need RPM Fusion)
  • Arch Linux: sudo pacman -S mpv (includes development headers)
  • openSUSE: sudo zypper install mpv libmpv-devel
  • other distros: Use your package manager; search for "mpv" and a related "dev/devel/headers" package.

Windows:

  1. get mpv and development files:

  2. extract both packages. the dev archive contains:

    • libmpv*.dll (name may vary slightly)
  3. after compiling pnimrp:

    • copy libmpv*.dll to the same directory as pnimrp.exe

macOS X:

  • Homebrew (Recommended): brew install mpv
  • MacPorts: sudo port install mpv

FreeBSD: sudo pkg install mpv

Termux (Android): pkg install mpv

step 2: install the nim compiler:

  • unix:
    curl https://nim-lang.org/choosenim/init.sh -sSf | sh
    

note this wouldnt work on termux, instead do Termux (Android): pkg install nim

step 3: install pnimrp:

nimble install pnimrp

or compile it manually:

nim c -d:release pnimrp
./pnimrp

want a simple build? (very minimal):

nim c -d:release -d:simple pnimrp

cant/dont want emojis?: add -d:noEmoji

want to use smaller bin size?: add -d:useJsmn

(back to top)

🎮 controls

key action
1-9, a-m select menu options
r return to the previous menu
q quit the application
p pause/resume playback
m mute/unmute
+ increase volume
- decrease volume

📖 documentation

for detailed usage instructions, see:

  • 📄 doc/user.md: user guide.
  • 📄 doc/installation.md: installation instructions.

🤝 contributing

here is how you can help:

  1. submit pull requests: fix bugs you found or propose and add new functionality.

please read our Contributing Guidelines for more details.

📜 license

pnimrp is primarily licensed under the Mozilla Public License 2.0 (MPL-2.0). see the LICENSE file for details.

however, the following component is licensed with their respective original licences:

  • illwill.nim: adapted from illwill, this file is used for non-blocking input handling and is licensed under the WTFPL.

  • jsmn.nim: See More jsmn.nim this file is under original licence which is MIT.

for more information about WTFPL, see: WTFPL License. the original license text is included in the file.

🙏 credits

  • pmrp: inspiration and initial codebase 💡
  • libmpv: playback functionality
  • c2nim: wrapping objects
  • illwill: async input handling
  • jsmn.nim: minimal json parser impl
  • GPT-3.5 Claude-3.5-Sonnet: documentation and code improvements
  • DeepSeek-V3: documentation and Code improvements 🥰
  • fmstream.org and others: for providing links
  • asciinema: for being able to show HD demo 🎥
  • you: for using and supporting this project! ❤️

🎶 happy listening!

thank you for using pnimrp. please do share it with your minimalist friends

(back to top)