Create first version of picture in picture plugin

This commit is contained in:
TC
2022-04-07 20:01:29 +02:00
parent 5cffb6f062
commit d2265b59d7
4 changed files with 158 additions and 0 deletions

View 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);
});
};