No description
Find a file
2025-05-19 19:52:58 +05:30
.github/workflows ci: try to gen source for other platforms too 2025-04-23 19:48:45 +05:30
assets assets: update hits stations 2025-05-19 19:52:58 +05:30
doc remove macos from support, doesnt compile; 2025-03-18 14:42:01 +05:30
src feat: randomize better when chooseforme 2025-05-19 10:38:30 +05:30
tools findDead.parent: replace glibc check w GNU coreutils check 2025-04-17 11:44:41 +05:30
web web: style: reduce excess space bw each container 2025-04-22 02:20:33 +05:30
.gitignore feat: like: add history songs and reuse file append logic 2025-03-27 10:08:06 +05:30
config.nims disable useless hints when nlvm 2025-05-05 22:18:36 +05:30
index.html web: index.license: add MPL-2.0 badge to license link 2025-04-22 02:18:00 +05:30
LICENSE make project MPL-2.0 2025-01-14 00:12:47 +05:30
NOTICE NOTICE: update copyright and attribution 2025-04-10 03:18:20 +05:30
pnimrp.nim refac: hidestderr: use proc(var state) instead of proc(ref state) 2025-04-28 01:17:37 +05:30
pnimrp.nimble backport compiler require to 1.4.0 2025-03-22 15:41:06 +05:30
README.md remove health status 2025-05-01 17:26:53 +05:30

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)