Mohabdo21 / mini-player

Minimalist desktop music player built with Python and PyQt6

Repository from Github https://github.comMohabdo21/mini-playerRepository from Github https://github.comMohabdo21/mini-player

🎡 Mini Player β€” PyQt6 Music Player

Mini Player is a sleek and modern desktop music player built with PyQt6. It provides a lightweight, intuitive interface for playing audio files with smart features like playback speed control, volume adjustment, and smooth track title scrolling β€” all wrapped in a stylish UI.

Build and Release Mini Player

✨ Features

  • 🎧 Play MP3, FLAC, WAV, OGG files from folders or single files
  • πŸ“‚ File browser with list display of tracks
  • ▢️ Pause, resume, stop with responsive controls
  • 🎚 Adjustable playback speed (0.5x–1.5x)
  • πŸ“ˆ Smooth progress bar seeking
  • ⏳ Real-time time labels (00:00 / 03:45)
  • πŸ” Repeat track toggle
  • πŸ”‡ Mute/unmute with volume memory
  • πŸ“€ "Now Playing" banner with scrolling marquee for long titles
  • πŸ’Ύ Automatic save/load of last session (volume, speed, track, etc.)
  • 🎨 Stylish modern UI with custom icons and dark theme

MiniPlayer Screenshot


πŸ› οΈ Requirements

  • Python 3.8+
  • PyQt6
  • Mutagen (for metadata handling)

πŸš€ Getting Started

Installation

git clone https://github.com/Mohabdo21/mini-player.git
cd mini-player
pip install -r requirements.txt

Run the Application

python main.py

Alternatively, after installation:

mini-player

Building Executable

To create a standalone executable:

pyinstaller app.spec

This will generate a dist folder containing the executable. You can run it directly:

./dist/MiniPlayer

Your settings (volume, speed, last folder, etc.) are saved automatically to mini_player.ini.


πŸ“ Project Structure

The project follows a modular design pattern for better maintainability:

mini-player/
β”œβ”€β”€ main.py                # Entry point script
β”œβ”€β”€ app.spec               # PyInstaller specification
β”œβ”€β”€ LICENSE                # License file
β”œβ”€β”€ pyproject.toml         # Project configuration
β”œβ”€β”€ README.md              # Project documentation
β”œβ”€β”€ requirements.txt       # Dependencies
β”œβ”€β”€ setup.py               # Setup script
└── src/                   # Source code
    β”œβ”€β”€ __init__.py        # Package initialization
    β”œβ”€β”€ icons/             # Icon assets
    β”œβ”€β”€ default_album.png  # Default album art
    └── miniplayer/        # Main package
        β”œβ”€β”€ __init__.py    # Version info
        β”œβ”€β”€ app.py         # Application entry point
        β”œβ”€β”€ core/          # Core functionality
        β”‚   β”œβ”€β”€ __init__.py
        β”‚   β”œβ”€β”€ audio_player.py      # Audio playback engine
        β”‚   β”œβ”€β”€ config_manager.py    # Settings management
        β”‚   └── track_manager.py     # Track list management
        β”œβ”€β”€ ui/            # User interface components
        β”‚   β”œβ”€β”€ __init__.py
        β”‚   β”œβ”€β”€ main_window.py       # Main application window
        β”‚   └── playlist_widget.py   # Custom playlist widget
        └── utils/         # Utilities and helpers
            β”œβ”€β”€ __init__.py
            └── helpers.py           # Helper functions

Module Overview

  • core: Contains the business logic and data handling

    • audio_player.py: Core audio playback functionality
    • config_manager.py: Settings management
    • track_manager.py: Track list and file system operations
  • ui: User interface components

    • main_window.py: Main application window
    • playlist_widget.py: Custom playlist widget
  • utils: Utility functions

    • helpers.py: Common helper functions

βš™οΈ Configuration

Settings are stored in mini_player.ini and include:

  • Last opened folder and track
  • Volume level
  • Playback speed
  • Repeat/mute toggle states

πŸ’‘ Future Enhancements

  • Playlist management (save/load playlists)
  • Drag-and-drop track queue
  • Advanced album art fetching from metadata or online sources
  • Audio visualizer or waveform view
  • Mobile version using QtQuick/QML

πŸͺͺ License

MIT License β€” free to use, modify, and distribute.

About

Minimalist desktop music player built with Python and PyQt6

License:MIT License


Languages

Language:Python 95.1%Language:Shell 4.9%