Skip to content

Commit

Permalink
Merge pull request #1279 from th-ch/fix/1274
Browse files Browse the repository at this point in the history
  • Loading branch information
JellyBrick authored Oct 8, 2023
2 parents ef0c30e + f1050cb commit 73a049a
Show file tree
Hide file tree
Showing 9 changed files with 115 additions and 13 deletions.
9 changes: 3 additions & 6 deletions plugins/discord/back.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,9 @@ const resetInfo = () => {
console.log('discord disconnected');
}

setTimeout(() => {
for (const cb of refreshCallbacks) {
cb();
}
}, 100);

for (const cb of refreshCallbacks) {
cb();
}
};

const connectTimeout = () => new Promise((resolve, reject) => setTimeout(() => {
Expand Down
3 changes: 3 additions & 0 deletions plugins/in-app-menu/assets/close.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions plugins/in-app-menu/assets/maximize.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
3 changes: 3 additions & 0 deletions plugins/in-app-menu/assets/minimize.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions plugins/in-app-menu/assets/unmaximize.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 9 additions & 4 deletions plugins/in-app-menu/back.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import path from 'node:path';

import { register } from 'electron-localshortcut';

import { BrowserWindow, Menu, MenuItem, ipcMain } from 'electron';
Expand All @@ -25,7 +23,7 @@ export default (win: BrowserWindow) => {
(key: string, value: unknown) => (key !== 'commandsMap' && key !== 'menu') ? value : undefined),
),
);

const getMenuItemById = (commandId: number): MenuItem | null => {
const menu = Menu.getApplicationMenu();

Expand All @@ -40,7 +38,7 @@ export default (win: BrowserWindow) => {
break;
}
}

return target;
};

Expand All @@ -57,4 +55,11 @@ export default (win: BrowserWindow) => {
(key: string, value: unknown) => (key !== 'commandsMap' && key !== 'menu') ? value : undefined),
);
});

ipcMain.handle('window-is-maximized', () => win.isMaximized());

ipcMain.handle('window-close', () => win.close());
ipcMain.handle('window-minimize', () => win.minimize());
ipcMain.handle('window-maximize', () => win.maximize());
ipcMain.handle('window-unmaximize', () => win.unmaximize());
};
67 changes: 64 additions & 3 deletions plugins/in-app-menu/front.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@ import { ipcRenderer, Menu } from 'electron';

import { createPanel } from './menu/panel';

import logo from '../../assets/menu.svg';
import logo from './assets/menu.svg';
import close from './assets/close.svg';
import minimize from './assets/minimize.svg';
import maximize from './assets/maximize.svg';
import unmaximize from './assets/unmaximize.svg';

import { isEnabled } from '../../config/plugins';
import config from '../../config';

Expand All @@ -11,8 +16,9 @@ function $<E extends Element = Element>(selector: string) {
}

const isMacOS = navigator.userAgent.includes('Macintosh');
const isNotWindowsOrMacOS = !navigator.userAgent.includes('Windows') && !isMacOS;

export default () => {
export default async () => {
let hideMenu = config.get('options.hideMenu');
const titleBar = document.createElement('title-bar');
const navBar = document.querySelector<HTMLDivElement>('#nav-bar-background');
Expand All @@ -39,6 +45,60 @@ export default () => {
if (!isMacOS) titleBar.appendChild(logo);
document.body.appendChild(titleBar);

titleBar.appendChild(logo);

const addWindowControls = async () => {

// Create window control buttons
const minimizeButton = document.createElement('button');
minimizeButton.classList.add('window-control');
minimizeButton.appendChild(minimize);
minimizeButton.onclick = () => ipcRenderer.invoke('window-minimize');

const maximizeButton = document.createElement('button');
if (await ipcRenderer.invoke('window-is-maximized')) {
maximizeButton.classList.add('window-control');
maximizeButton.appendChild(unmaximize);
} else {
maximizeButton.classList.add('window-control');
maximizeButton.appendChild(maximize);
}
maximizeButton.onclick = async () => {
if (await ipcRenderer.invoke('window-is-maximized')) {
// change icon to maximize
maximizeButton.removeChild(maximizeButton.firstChild!);
maximizeButton.appendChild(maximize);

// call unmaximize
await ipcRenderer.invoke('window-unmaximize');
} else {
// change icon to unmaximize
maximizeButton.removeChild(maximizeButton.firstChild!);
maximizeButton.appendChild(unmaximize);

// call maximize
await ipcRenderer.invoke('window-maximize');
}
};

const closeButton = document.createElement('button');
closeButton.classList.add('window-control');
closeButton.appendChild(close);
closeButton.onclick = () => ipcRenderer.invoke('window-close');

// Create a container div for the window control buttons
const windowControlsContainer = document.createElement('div');
windowControlsContainer.classList.add('window-controls-container');
windowControlsContainer.appendChild(minimizeButton);
windowControlsContainer.appendChild(maximizeButton);
windowControlsContainer.appendChild(closeButton);

// Add window control buttons to the title bar
titleBar.appendChild(windowControlsContainer);
};

if (isNotWindowsOrMacOS) await addWindowControls();

if (navBar) {
const observer = new MutationObserver((mutations) => {
mutations.forEach(() => {
Expand Down Expand Up @@ -69,8 +129,9 @@ export default () => {
menu.style.visibility = 'hidden';
}
});
if (isNotWindowsOrMacOS) await addWindowControls();
};
updateMenu();
await updateMenu();

document.title = 'Youtube Music';

Expand Down
27 changes: 27 additions & 0 deletions plugins/in-app-menu/titlebar.css
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,33 @@ menu-separator {
margin-left: -4px;
}

/* Window control container */

.window-controls-container {
-webkit-app-region: no-drag;
display: flex;
justify-content: flex-end; /* Align to the right end of the title-bar */
align-items: center;
gap: 4px; /* Add spacing between the window control buttons */
position: absolute; /* Position it absolutely within title-bar */
right: 4px; /* Adjust the right position as needed */
}

/* Window control buttons */

.window-control {
width: 24px;
height: 24px;
background: none;
border: none;
cursor: pointer;
display: flex;
align-items: center;
color: #f1f1f1;
font-size: 14px;
padding: 0;
}

/* youtube-music style */

ytmusic-app-layout {
Expand Down

0 comments on commit 73a049a

Please sign in to comment.