Skip to content

Internet radio player for Linux systems. Runs quietly in the tray, supports 30k+ stations, and includes a simple terminal installer.

Notifications You must be signed in to change notification settings

HossamSaberr/RadioPlayer

Repository files navigation

Radio Player

A lightweight system-tray online radio player built with C++ and Qt 6.

Radio Player

Features

System Tray Integration - Runs quietly in the background, accessible from the system tray
Online Radio Streaming - Supports HTTP/HTTPS streams (Icecast, Shoutcast, MP3, AAC, OGG)
API Station Discovery - Browse and search 30,000+ radio stations worldwide via Radio Browser API
Search by Country/Genre/Name - Find stations from Egypt, USA, or any country; filter by music genre
Pre-configured Stations - Includes default stations (customizable via JSON file)
Volume Control - Adjustable volume with persistent settings (0%, 25%, 50%, 75%, 100%)
Notifications - Desktop notifications for playback events and track changes
Auto-Reconnect - Automatically reconnects if the stream is interrupted
Persistent Settings - Remembers your last station and volume level
Metadata Display - Shows current track information when available

Platform Support

Ubuntu/Linux - Primary platform, fully tested
Windows - Cross-platform compatible (Qt 6)
macOS - Should work (untested)

Requirements

Ubuntu/Debian Linux

Development Tools:

sudo apt-get update
sudo apt-get install -y \
    build-essential \
    cmake \
    git

Qt 6 Libraries:

sudo apt-get install -y \
    qt6-base-dev \
    qt6-multimedia-dev \
    qt6-base-private-dev \
    libqt6multimedia6 \
    libqt6multimediawidgets6

GStreamer Plugins (Audio Backend):

sudo apt-get install -y \
    gstreamer1.0-tools \
    gstreamer1.0-plugins-base \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-plugins-ugly \
    gstreamer1.0-libav

Optional Tools:

sudo apt-get install -y \
    librsvg2-bin \
    dpkg-dev

Windows

Requirements:

  1. Qt 6 (6.2 or later) - Download from qt.io

    • Choose: Qt 6.x for Windows (MSVC 2019 64-bit or MinGW)
    • Install components: Qt Multimedia, Qt Network
  2. CMake (3.16 or later) - Download from cmake.org

  3. Compiler:

    • Option A: Visual Studio 2019/2022 with C++ Desktop Development
    • Option B: MinGW (included with Qt installer)

Building from Source

Ubuntu/Linux

  1. Navigate to source directory
cd /root/Documents/RadioPlayer
  1. Install dependencies (if not already installed)
./install_dependencies.sh
  1. Build the application
./build.sh

Or manually:

mkdir build && cd build
cmake ..
make -j$(nproc)
  1. Run
./build/RadioPlayer

Windows

  1. Open Qt Command Prompt (from Start Menu → Qt → Qt 6.x for Desktop)

  2. Navigate to source directory

cd C:\path\to\plyn
  1. Create build directory
mkdir build
cd build
  1. Configure with CMake

For Visual Studio:

cmake .. -G "Visual Studio 16 2019" -A x64

For MinGW:

cmake .. -G "MinGW Makefiles"
  1. Build

For Visual Studio:

cmake --build . --config Release

For MinGW:

mingw32-make
  1. Run

For Visual Studio:

.\Release\RadioPlayer.exe

For MinGW:

.\RadioPlayer.exe

Installation

🚀 Quick Install (Recommended)

The easiest way to install RadioPlayer on Ubuntu/Linux:

# Clone the repository
git clone https://github.com/HossamSaberr/RadioPlayer.git
cd RadioPlayer

# Run the install script (builds and installs automatically)
sudo ./install.sh

This will:

  • Check for required dependencies
  • Build the application
  • Install to /usr/local/bin/RadioPlayer
  • Add RadioPlayer to your application menu

Without sudo (installs to ~/.local):

./install.sh

Ubuntu/Linux - Manual Installation

cd build
sudo make install

This installs:

  • Binary: /usr/local/bin/RadioPlayer
  • Icon: /usr/local/share/radioplayer/icon.png
  • Stations: /usr/local/share/radioplayer/stations.json

Ubuntu/Linux - Creating a .deb Package

cd build
cpack -G DEB
sudo dpkg -i RadioPlayer-1.0.0-Linux.deb

Running After Installation

# From terminal
RadioPlayer

# Or find it in your application menu under "Sound & Video"

Windows - Portable Installation

No installation needed! Simply run RadioPlayer.exe from the build directory.

Optional: Create a shortcut:

  1. Right-click RadioPlayer.exe
  2. Select "Create shortcut"
  3. Move shortcut to Desktop or Startup folder

Usage

Basic Operation

  1. Start the application - The radio icon appears in your system tray
  2. Left-click the tray icon to toggle Play/Stop
  3. Right-click to open the menu with these options:
    • ▶ Play - Start playback of the current station
    • ⏹ Stop - Stop playback
    • 📻 Stations - Select from pre-configured stations
    • 🔊 Volume - Adjust volume (0%, 25%, 50%, 75%, 100%)
    • 📡 Discover Stations - Browse 30,000+ stations via API
    • ℹ About - Show app information
    • ✕ Quit - Exit the application

Discovering New Stations

Click 📡 Discover Stations to access the station browser:

  • Search by Country: Find local stations (Egypt, USA, UK, etc.)
  • Search by Genre: Browse by music style (pop, rock, jazz, etc.)
  • Search by Name: Find specific stations
  • Top Stations: Get the most popular worldwide stations

Double-click any station to play it instantly!

Keyboard Shortcuts

Currently, playback is controlled entirely through the tray menu. Global keyboard shortcuts are planned for a future release.

Configuration

Settings location:

  • Linux: ~/.config/RadioPlayer/RadioPlayer.conf
  • Windows: %APPDATA%\RadioPlayer\RadioPlayer.conf

Stored settings:

  • Last played station
  • Volume level
  • Playback state (for auto-resume)
  • Auto-start preference (future feature)

Troubleshooting

Linux: System Tray Icon Not Appearing

GNOME Desktop:

# Install GNOME Shell extension for tray icons
sudo apt-get install gnome-shell-extension-appindicator
# Enable the extension
gnome-extensions enable [email protected]
# Restart GNOME Shell: Press Alt+F2, type 'r', press Enter

Alternative: Use GNOME Tweaks

sudo apt-get install gnome-tweaks
# Open Tweaks → Extensions → Enable "Ubuntu AppIndicators"

Linux: No Audio Output

  1. Check GStreamer plugins:
sudo apt-get install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav
  1. Test stream URL manually:
gst-play-1.0 "http://ice1.somafm.com/groovesalad-128-mp3"
  1. Check audio output:
pactl list sinks  # List available audio outputs

Windows: Qt DLL Not Found

Error: The code execution cannot proceed because Qt6Core.dll was not found

Solution: Add Qt bin directory to PATH or copy DLLs to app directory

# Option 1: Add to PATH (replace with your Qt installation path)
set PATH=C:\Qt\6.5.0\msvc2019_64\bin;%PATH%

# Option 2: Use windeployqt (recommended for distribution)
windeployqt.exe RadioPlayer.exe

Windows: System Tray Icon Not Showing

  1. Check Windows notification area settings
  2. Click the up arrow (^) in system tray to show hidden icons
  3. Right-click taskbar → Taskbar settings → Other system tray icons → Enable RadioPlayer

Stream Won't Play (All Platforms)

  • Verify the stream URL is correct and accessible
  • Check your internet connection
  • Some streams may be geo-restricted
  • Try a different station from the Discover Stations browser
  • Check firewall settings

Application Won't Start

Linux:

# Run with debug output
QT_DEBUG_PLUGINS=1 ./RadioPlayer

# Check Qt installation
qmake6 --version

Windows:

# Run from command prompt to see error messages
RadioPlayer.exe

# Check Qt installation
qmake --version

Known Limitations

  • No global keyboard shortcuts (yet)
  • No recording capability (planned)
  • No equalizer or audio effects
  • Windows version untested (should work)

Future Enhancements

  • Global keyboard shortcuts (Play/Pause, Volume Up/Down)
  • Settings dialog for auto-start and other preferences
  • Station manager GUI for adding/removing stations
  • Mini floating player window
  • Stream recording capability
  • macOS support

About

Internet radio player for Linux systems. Runs quietly in the tray, supports 30k+ stations, and includes a simple terminal installer.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published