Skip to content

[Feature]: Add mini-player position memory — persist window position and size across sessions #61

Description

@prince-pokharna

Summary

Every time the user pops the YouTube Music player out into the mini-player window, it opens at the browser's default position and size. The user has to manually reposition and resize it every session. For users with specific multi-monitor setups or preferred screen corners, this is a repetitive inconvenience that degrades the extension's polish and usability.

Problem

  • The mini-player window position is not saved between uses.
  • On multi-monitor setups, the window always opens on the primary monitor regardless of user preference.
  • The window size is not persisted — users who prefer a taller or wider player must resize it every time.
  • The browser.windows.create() call does not pass left, top, width, or height parameters derived from user preference.

Impact

  • Regular users must reposition the mini-player window every single session.
  • Power users on multi-monitor setups are most affected, as the window always opens in an inconvenient location.
  • This is a commonly expected feature of any persistent mini-player and its absence makes the extension feel unfinished.

Proposed Solution

  1. Save position/size on window move and resize: Listen to chrome.windows.onBoundsChanged in the background script to detect when the mini-player window is moved or resized, then debounce-save the bounds to chrome.storage.local.

  2. Restore position/size on pop-out: When creating the mini-player window, read the saved bounds from chrome.storage.local and pass them to chrome.windows.create():

const saved = await chrome.storage.local.get('miniPlayerBounds');
const bounds = saved.miniPlayerBounds || { width: 400, height: 230, left: 100, top: 100 };

chrome.windows.create({
  url: tabUrl,
  type: 'popup',
  width: bounds.width,
  height: bounds.height,
  left: bounds.left,
  top: bounds.top,
});
  1. Fallback: If no saved position exists (first time use), open at a sensible default position in the top-right corner of the screen using chrome.system.display.getInfo().

This requires no new permissions beyond storage (already in use) and is fully compatible with both Manifest V2 and V3.

I am happy to implement and test this across Chrome, Firefox, and Edge. 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