mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-10 10:11:46 +00:00
Create first version of picture in picture plugin
This commit is contained in:
58
plugins/picture-in-picture/back.js
Normal file
58
plugins/picture-in-picture/back.js
Normal file
@ -0,0 +1,58 @@
|
||||
const path = require("path");
|
||||
|
||||
const { app, ipcMain } = require("electron");
|
||||
|
||||
const { injectCSS } = require("../utils");
|
||||
|
||||
let isInPiPMode = false;
|
||||
let originalPosition;
|
||||
let originalSize;
|
||||
|
||||
const pipPosition = [10, 10];
|
||||
const pipSize = [400, 220];
|
||||
|
||||
const togglePiP = async (win) => {
|
||||
isInPiPMode = !isInPiPMode;
|
||||
|
||||
if (isInPiPMode) {
|
||||
injectCSS(win.webContents, path.join(__dirname, "style.css"));
|
||||
|
||||
originalPosition = win.getPosition();
|
||||
originalSize = win.getSize();
|
||||
|
||||
win.setFullScreenable(false);
|
||||
await win.webContents.executeJavaScript(
|
||||
// Go fullscreen
|
||||
`document.querySelector(".fullscreen-button").click()`
|
||||
);
|
||||
|
||||
app.dock.hide();
|
||||
win.setVisibleOnAllWorkspaces(true, {
|
||||
visibleOnFullScreen: true,
|
||||
});
|
||||
app.dock.show();
|
||||
win.setAlwaysOnTop(true, "screen-saver", 1);
|
||||
} else {
|
||||
win.setFullScreenable(true);
|
||||
await win.webContents.executeJavaScript(
|
||||
// Exit fullscreen
|
||||
`document.querySelector(".exit-fullscreen-button").click()`
|
||||
);
|
||||
|
||||
win.setVisibleOnAllWorkspaces(false);
|
||||
win.setAlwaysOnTop(false);
|
||||
}
|
||||
|
||||
const [x, y] = isInPiPMode ? pipPosition : originalPosition;
|
||||
const [w, h] = isInPiPMode ? pipSize : originalSize;
|
||||
win.setPosition(x, y);
|
||||
win.setSize(w, h);
|
||||
|
||||
win.setWindowButtonVisibility(!isInPiPMode);
|
||||
};
|
||||
|
||||
module.exports = (win) => {
|
||||
ipcMain.on("picture-in-picture", async () => {
|
||||
await togglePiP(win);
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user