I made a Fix for the Winodws Scale......
Electron wrapper around YouTube Music featuring:
- Native look & feel, aims at keeping the original interface
- Framework for custom plugins: change YouTube Music to your needs (style, content, features), enable/disable plugins in one click
You can check out the latest release to quickly find the latest version.
Install the youtube-music-bin
package from the AUR. For AUR installation instructions, take a look at
this wiki page.
You can install the app using Homebrew:
brew install --cask https://raw.githubusercontent.com/th-ch/youtube-music/master/youtube-music.rb
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:
xattr -cr /Applications/YouTube\ Music.app
You can use the Scoop package manager to install the youtube-music
package from
the extras
bucket.
scoop bucket add extras
scoop install extras/youtube-music
Alternately you can use Winget, Windows 11s
official CLI package manager to install the th-ch.YouTubeMusic
package.
Note: Microsoft Defender SmartScreen might block the installation since it is from an "unknown publisher". This is also true for the manual installation when trying to run the executable(.exe) after a manual download here on github (same file).
winget install th-ch.YouTubeMusic
- Download the
*.nsis.7z
file for your device architecture in release page.x64
for 64-bit Windowsia32
for 32-bit Windowsarm64
for ARM64 Windows
- Download installer in release page. (
*-Setup.exe
) - Place them in the same directory.
- Run the installer.
-
Ad Blocker: Block all ads and tracking out of the box
-
Album Color Theme: Applies a dynamic theme and visual effects based on the album color palette
-
Ambient Mode: Applies a lighting effect by casting gentle colors from the video, into your screen’s background.
-
Audio Compressor: Apply compression to audio (lowers the volume of the loudest parts of the signal and raises the volume of the softest parts)
-
Blur Nav Bar: makes navigation bar transparent and blurry
-
Bypass age restrictions: bypass YouTube's age verification
-
Captions selector: Enable captions
-
Compact sidebar: Always set the sidebar in compact mode
-
Crossfade: Crossfade between songs
-
Disable Autoplay: Makes every song start in "paused" mode
-
Discord: Show your friends what you listen to with Rich Presence
-
Downloader: downloads MP3 directly from the interface (youtube-dl)
-
Exponential Volume: Makes the volume slider exponential so it's easier to select lower volumes.
-
In-App Menu: gives bars a fancy, dark look
(see this post if you have problem accessing the menu after enabling this plugin and hide-menu option)
-
Last.fm: Scrobbles support
-
Lumia Stream: Adds Lumia Stream support
-
Lyrics Genius: Adds lyrics support for most songs
-
Navigation: Next/Back navigation arrows directly integrated in the interface, like in your favorite browser
-
No Google Login: Remove Google login buttons and links from the interface
-
Notifications: Display a notification when a song starts playing (interactive notifications are available on windows)
-
Picture in picture: allows to switch the app to picture-in-picture mode
-
Playback Speed: Listen fast, listen slow! Adds a slider that controls song speed
-
Precise Volume: Control the volume precisely using mousewheel/hotkeys, with a custom hud and customizable volume steps
-
Quality Changer: Allows changing the video quality with a button on the video overlay
-
Shortcuts: Allows setting global hotkeys for playback (play/pause/next/previous) + disable media osd by overriding media keys + enable Ctrl/CMD + F to search + enable linux mpris support for mediakeys + custom hotkeys for advanced users
-
Skip-Silences - Automatically skip silenced sections
-
SponsorBlock: Automatically Skips non-music parts like intro/outro or parts of music videos where the song isn't playing
-
Taskbar Media Control: Control playback from your Windows taskbar
-
Touchbar: Custom TouchBar layout for macOS
-
Video Toggle: Adds a button to switch between Video/Song mode. can also optionally remove the whole video tab
-
Visualizer: Different music visualizers
- Auto confirm when paused (Always Enabled): disable the "Continue Watching?" popup that pause music after a certain time
If
Hide Menu
option is on - you can show the menu with the alt key (or ` [backtick] if using the in-app-menu plugin)
You can load CSS files to change the look of the application (Options > Visual Tweaks > Themes).
Some predefined themes are available in https://github.com/kerichdev/themes-for-ytmdesktop-player.
git clone https://github.com/th-ch/youtube-music
cd youtube-music
pnpm install --frozen-lockfile
pnpm start
Using plugins, you can:
- manipulate the app - the
BrowserWindow
from electron is passed to the plugin handler - change the front by manipulating the HTML/CSS
Create a folder in plugins/YOUR-PLUGIN-NAME
:
- if you need to manipulate the BrowserWindow, create a file with the following template:
// file: main.ts
export default (win: Electron.BrowserWindow, config: ConfigType<'YOUR-PLUGIN-NAME'>) => {
// something
};
then, register the plugin in src/index.ts
:
import yourPlugin from './plugins/YOUR-PLUGIN-NAME/back';
// ...
const mainPlugins = {
// ...
'YOUR-PLUGIN-NAME': yourPlugin,
};
- if you need to change the front, create a file with the following template:
// file: renderer.ts
export default (config: ConfigType<'YOUR-PLUGIN-NAME'>) => {
// This function will be called as a preload script
// So you can use front features like `document.querySelector`
};
then, register the plugin in src/renderer.ts
:
import yourPlugin from './plugins/YOUR-PLUGIN-NAME/front';
const rendererPlugins: PluginMapper<'renderer'> = {
// ...
'YOUR-PLUGIN-NAME': yourPlugin,
};
Finally, add the plugin to the default config file src/config/default.ts
:
export default {
// ...
'plugins': {
// ...
'YOUR-PLUGIN-NAME': {
// ...
},
},
};
- injecting custom CSS: create a
style.css
file in the same folder then:
import path from 'node:path';
import style from './style.css';
// main.ts
export default (win: Electron.BrowserWindow) => {
injectCSS(win.webContents, style);
};
- changing the HTML:
// renderer.ts
export default () => {
// Remove the login button
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
};
- communicating between the front and back: can be done using the ipcMain module from electron. See
utils.js
file and example innavigation
plugin.
- Clone the repo
- Follow this guide to install
pnpm
- Run
pnpm install --frozen-lockfile
to install dependencies - Run
pnpm build:OS
pnpm dist:win
- Windowspnpm dist:linux
- Linuxpnpm dist:mac
- MacOS
Builds the app for macOS, Linux, and Windows, using electron-builder.
pnpm test
Uses Playwright to test the app.
MIT © th-ch