Skip to content

[Feature]: Add volume control slider to the mini-player UI #63

Description

@prince-pokharna

Summary

The current mini-player UI exposes playback controls (play/pause, next, previous) but does not include a volume control. Users who pop out the mini-player while working cannot adjust YouTube Music's volume without switching back to the full YouTube Music tab. For a distraction-free workflow, this defeats the purpose of the mini-player.

Problem

  • The mini-player has no volume slider or mute button.
  • To change volume, the user must switch focus back to the main YouTube Music tab and interact with YTM's built-in volume slider.
  • This breaks the user's flow in exactly the scenario the extension is designed to prevent.
  • YouTube Music's volume slider is accessible via its DOM (.volume-slider or the yt-slider element), so injecting commands is feasible from the content script.

Impact

  • A volume change (e.g., for a call or notification) requires abandoning the mini-player entirely.
  • The mini-player feels incomplete compared to native OS media players or competitors like browser-native picture-in-picture.

Proposed Solution

  1. Add a volume slider to the mini-player HTML: A compact <input type="range" min="0" max="100"> styled to match the existing mini-player aesthetic using the project's current CSS variables.

  2. Read current volume on open: When the mini-player initialises, query the current YTM volume level from the content script and set the slider's initial value to match.

  3. Relay volume changes via message passing: When the slider value changes, send a message to the background script, which forwards it to the YTM content script to programmatically set the volume on YTM's player element.

  4. Sync on external change: If the user changes volume in the main YTM tab, broadcast the new value back to the mini-player slider so both stay in sync.

This is fully achievable within the existing message-passing architecture, requires no new permissions, and works across both MV2 (Firefox) and MV3 (Chrome). I am happy to implement and test this. Could you please assign this issue to me?

Labels: enhancement, feature request, help wanted, GSSoC 2026

Metadata

Metadata

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions