Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Pear 🍐 is extension for music player

License

NotificationsYou must be signed in to change notification settings

pear-devs/pear-desktop

Repository files navigation

  • Native look & feel extension

Important

⚠️ Disclaimer

No Affiliation

This project, and its contributors, are not affiliated with, authorized by, endorsed by, or in any way officially connected with Google LLC, YouTube, or any of their subsidiaries or affiliates.This is an independent, non-profit, and unofficial extension developed by a team of volunteers with the goal of providing a desktop experience.

Trademarks

The names "Google" and "YouTube Music", as well as related names, marks, emblems, and images, are registered trademarks of their respective owners. Any use of these trademarks is for identification and reference purposes only and does not imply any association with the trademark holder. We have no intention of infringing upon these trademarks or causing harm to the trademark holders.

Limitation of Liability

This application (extension) is provided "AS IS", and you use it at your own risk. In no event shall the developers or contributors be liable for any claim, damages, or other liability, including any legal consequences, arising from, out of, or in connection with the software or the use or other dealings in the software. The responsibility for any and all outcomes of using this software rests entirely with the user.

Content

Translation

You can help with translation onHosted Weblate.

translation statustranslation status 2

Download

You can check out thelatest release to quickly find thelatest version.

Arch Linux

Install thepear-desktop package from the AUR. For AUR installation instructions, take a look atthiswiki page.

macOS

You can install the app using Homebrew (see thecask definition):

brew install pear-devs/pear-desktop

If you install the app manually and get an error "is damaged and can’t be opened." when launching the app, run the following in the Terminal:

/usr/bin/xattr -cr /Applications/Pear\Desktop.app

Windows

You can use theScoop package manager to install thepear-desktop package fromtheextras bucket.

scoop bucket add extrasscoop install extras/pear-desktop

Alternately you can useWinget, Windows 11sofficial CLI package manager to install thepear-devs.pear-desktop package.

Note: Microsoft Defender SmartScreen might block the installation since it is from an "unknown publisher". This is alsotrue for the manual installation when trying to run the executable(.exe) after a manual download here on github (samefile).

winget install pear-devs.pear-desktop

How to install without a network connection? (in Windows)

  • Download the*.nsis.7z file foryour device architecture inrelease page.
    • x64 for 64-bit Windows
    • ia32 for 32-bit Windows
    • arm64 for ARM64 Windows
  • Download installer in release page. (*-Setup.exe)
  • Place them in thesame directory.
  • Run the installer.

Themes

You can load CSS files to change the look of the application (Options > Visual Tweaks > Themes).

Some predefined themes are available inhttps://github.com/kerichdev/themes-for-ytmdesktop-player.

Dev

git clone https://github.com/pear-devs/pear-desktopcd pear-desktoppnpm install --frozen-lockfilepnpm dev

Build your own plugins

Using plugins, you can:

  • manipulate the app - theBrowserWindow from electron is passed to the plugin handler
  • change the front by manipulating the HTML/CSS

Creating a plugin

Create a folder insrc/plugins/YOUR-PLUGIN-NAME:

  • index.ts: the main file of the plugin
importstylefrom'./style.css?inline';// import style as inlineimport{createPlugin}from'@/utils';exportdefaultcreatePlugin({name:'Plugin Label',restartNeeded:true,// if value is true, ytmusic show restart dialogconfig:{enabled:false,},// your custom configstylesheets:[style],// your custom style,menu:async({ getConfig, setConfig})=>{// All *Config methods are wrapped Promise<T>constconfig=awaitgetConfig();return[{label:'menu',submenu:[1,2,3].map((value)=>({label:`value${value}`,type:'radio',checked:config.value===value,click(){setConfig({ value});},})),},];},backend:{start({ window, ipc}){window.maximize();// you can communicate with renderer pluginipc.handle('some-event',()=>{return'hello';});},// it fired when config changedonConfigChange(newConfig){/* ... */},// it fired when plugin disabledstop(context){/* ... */},},renderer:{asyncstart(context){console.log(awaitcontext.ipc.invoke('some-event'));},// Only renderer available hookonPlayerApiReady(api,context){// set plugin config easilycontext.setConfig({myConfig:api.getVolume()});},onConfigChange(newConfig){/* ... */},stop(_context){/* ... */},},preload:{asyncstart({ getConfig}){constconfig=awaitgetConfig();},onConfigChange(newConfig){},stop(_context){},},});

Common use cases

  • injecting custom CSS: create astyle.css file in the same folder then:
// index.tsimportstylefrom'./style.css?inline';// import style as inlineimport{createPlugin}from'@/utils';exportdefaultcreatePlugin({name:'Plugin Label',restartNeeded:true,// if value is true, pear-desktop will show a restart dialogconfig:{enabled:false,},// your custom configstylesheets:[style],// your custom stylerenderer(){}// define renderer hook});
  • If you want to change the HTML:
import{createPlugin}from'@/utils';exportdefaultcreatePlugin({name:'Plugin Label',restartNeeded:true,// if value is true, ytmusic will show the restart dialogconfig:{enabled:false,},// your custom configrenderer(){console.log('hello from renderer');}// define renderer hook});
  • communicating between the front and back: can be done using the ipcMain module from electron. Seeindex.ts file andexample insponsorblock plugin.

Build

  1. Clone the repo
  2. Followthis guide to installpnpm
  3. Runpnpm install --frozen-lockfile to install dependencies
  4. Runpnpm build:OS
  • pnpm dist:win - Windows
  • pnpm dist:linux - Linux (amd64)
  • pnpm dist:linux:deb-arm64 - Linux (arm64 for Debian)
  • pnpm dist:linux:rpm-arm64 - Linux (arm64 for Fedora)
  • pnpm dist:mac - macOS (amd64)
  • pnpm dist:mac:arm64 - macOS (arm64)

Builds the app for macOS, Linux, and Windows,usingelectron-builder.

Production Preview

pnpm start

Tests

pnpmtest

UsesPlaywright to test the app.

License

MIT ©pear-devs

FAQ

Why apps menu isn't showing up?

IfHide Menu option is on - you can show the menu with thealt key (or` [backtick] if usingthe in-app-menu plugin)


[8]ページ先頭

©2009-2025 Movatter.jp