Skip to content

siljamdev/AshRadio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AshRadio

AshRadio is a lightweight music player that runs in the terminal

Features

  • Fully terminal-based
  • Lightweight and fast
  • Importing songs/playlists from youtube with yt-dlp
  • Exporting songs
  • Wrapped-style stats
  • OS media integration
  • Customizable color palette
  • Customizable keybinds

App screenshot

Usage

You can import songs either from files locally or, using yt-dlp, from YouTube(or other supported sites).
Songs can have multiple authors and be grouped in playlists. Albums do not exist for simplicity, but playlists can easily do their job.
The session panel contains the queue for customizing the songs playing and the source, a 'pool' of songs to choose next from.
There is a very complete in-app Help menu.

The application will only work in an interactive console

Installation

You can install AshRadio for Windows, Linux and MacOS with the portable executable from the releases.
Compatibility with MacOS is untested.

CLI

This application features a useful CLI for basic automatable actions, and has easy to parse output.
To see more about it, execute ashradio -h.

Configuration

The config file is located in %appdata%/ashproject/ashradio/config.ash or ~/.config/ashproject/ashradio/config.ash.
It is an AshFile, modifiable with AshFile-Editor.

Palette

Colors are made up of foreground(fg) and background(bg), being Color3 structures. If they are left empty, default panel or default terminal colors will be used
Their key in the ashfile is: ui.palette.name
There are 4 ways of configuring them ([] meaning an array of bytes):

  • Both fg and bg: ui.palette.name: [fg.R, fg.G, fg.B, bg.R, bg.G, bg.B]
  • Only fg: ui.palette.name: [fg.R, fg.G, fg.B]
  • Only bg: ui.palette.name: [0, bg.R, bg.G, bg.B]
  • None: ui.palette.name: []

Keybinds

Keybinds can have two keys associated to them, primary and secondary.
Each key is represented by two bytes, the first one representing a ConsoleKey(ck) and the second one a ConsoleModifiers(cm).
Their key in the ashfile is: keybinds.name
There are 2 ways of configuring them ([] meaning an array of bytes):

  • Only primary: keybinds.name: [ck1, cm1]
  • Both primary and secondary: keybinds.name: [ck1, cm1, ck2, cm2]

License

This software is licensed under the MIT License.

Internal operation

It is powered by AshConsoleGraphics. This library, made by myself, allows to easily make console applications as rich as this one.
It also uses Managed BASS library for audio.