Electron 多显示器渲染

news/2024/10/20 16:16:14/

Electron打出的包,如果当前有俩个显示器,则可以配置当前显示倒哪个显示器上,或者可以配置不同的显示器,启动不同的项目,只在WindowsLinux下测试过,Mac没有真机,可以利用docker安装MacOS环境,按理说没问题,具体怎么配置,如下:

const { app, BrowserWindow, ipcMain, Menu, electron, screen } = require('electron')// 禁用沙盒渲染器
app.enableSandbox()
// 禁用硬件加速/GPU渲染
app.disableHardwareAcceleration()
// 不初始化菜单,使用默认菜单
Menu.setApplicationMenu(null)// 创建应用
function createWindow() {// 判断当前的窗口数量let displays = screen.getAllDisplays()// 判断是否副窗口let externalDisplay = displays.find((display) => {return display.bounds.x !== 0 || display.bounds.y !== 0})// 如果是副窗口if (externalDisplay) {// 创建应用_create({ x: externalDisplay.bounds.x + 500, y: externalDisplay.bounds.y + 50 })}// 创建应用_create()
}// Electron 结束初始化
app.whenReady().then(() => {// 400毫秒延迟,解决在Linux部分文件类型中,透明不生效的bugsetTimeout(_ => {// 创建应用createWindow()}, 400)// 通常在 macOS 上,当点击 dock 中的应用程序图标时,如果没有其他app.on('activate', function () {// 打开的窗口,那么程序会重新创建一个窗口。if (BrowserWindow.getAllWindows().length === 0) createWindow()})
})

然后调用_create事件

/*** @description 创建应用实例* @param {Object} option: 附加参数*/
function _create(option = {}) {let programWindow // 主屏let baseConfig = {fullscreen: true, // 全屏webPreferences: {preload: path.join(__dirname, 'preload.js'),devTools: false, // 开发者工具sandbox: false // 禁用沙盒},frame: false, // 禁用frametitleBarStyle: 'hidden', // 隐藏bartitleBarStyle: 'customButtonsOnHover',transparent: true, // 窗口透明alwaysOnTop: true, // 是否置顶backgroundColor: 'rgba(0, 0, 0, 0)' // 背景颜色}// 创建浏览器窗口if (option.x) {programWindow = new BrowserWindow(Object.assign(option, baseConfig))} else {programWindow = new BrowserWindow(baseConfig)}// 判断当前的环境,如果是开发if (!app.isPackaged) {programWindow.loadURL("http://10.0.128.101/#/?from=socluster&clientServer=true") // 将该行改为下面这一行,加载url} else {// 加载 index.htmlprogramWindow.loadURL("http://127.0.0.1/#/?from=socluster&clientServer=true") // 将该行改为下面这一行,加载url}// 监听退出ipcMain.on('quit', (event, title) => {// 销毁应用程序programWindow.destroy()})// 打开开发工具// programWindow.webContents.openDevTools()
}

效果图:
在这里插入图片描述


http://www.ppmy.cn/news/1372591.html

相关文章

MapReduce内存参数自动推断

MapReduce内存参数自动推断。在Hadoop 2.0中,为MapReduce作业设置内存参数非常繁琐,涉及到两个参数:mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts,一旦设置不合理,则会使得内存资源浪费严重&a…

【快速上手QT】07-对话框QDialog

QDialog 今天讲一个我们这个系列的第一篇就提到的东西&#xff1a;QDialog。 相信经过前几篇的学习&#xff0c;大家应该是能够通过QT助手来对QDialog有个初步的了解。 我们就直接来测试一下。 #include "Zhetu.h"#include <qdebug.h> #include <QPushBu…

探索Terraform实践:优化基础设施管理

Terraform 是管理基础设施及代码&#xff08;IaC&#xff09;最常用的工具之一&#xff0c;它能使我们安全且可预测地对基础设施应用更改。 Terraform作为一个强大的基础设施即代码工具&#xff0c;为开发人员和运维团队提供了一种简单而强大的方式来定义、部署和管理基础设施。…

flutter打包app

Flutter 打包APP &#xff08;Android & IOS&#xff09;_encountered error while building for device.-CSDN博客 使用命令行 keytool -genkey -v -keystore ../key -keyalg RSA -keysize 2048 -validity 10000 -alias key 将在文件根目录上一层生成key文件&#xff0…

PyTorch2.0 环境搭建详细步骤(Nvidia显卡)

Step 1 、查看显卡驱动版本 Step2、下载CUDA 11.7 或者11.8&#xff08;我自己用的这个&#xff09;也行,稍后我会贴出来版本匹配对应表 CUDA Toolkit - Free Tools and Training | NVIDIA Developer Step3、下载CUDNN cuDNN 9.0.0 Downloads | NVIDIA Developer Step4、安装…

uniapp iOS 真机调试

一、下载爱思助手 二、打开爱思助手&#xff0c;把你的 苹果手机 用原装数据线连接至电脑&#xff1a; 找到 工具箱 > 搜索IPA > 打开IAP签名 三、添加 IPA 文件 mac&#xff1a;finder 》应用程序 》右键 HbuilderX 》显示包内容 》HbuilderX / plugins/ lau…

Java基础 - 8 - 算法、正则表达式

一. 算法 什么是算法&#xff1f; 解决某个实际问题的过程和方法 学习算法的技巧&#xff1f; 先搞清楚算法的流程&#xff0c;再直接去推敲如何写算法 1.1 排序算法 1.1.1 冒泡排序 每次从数组中找出最大值放在数组的后面去 public class demo {public static void main(S…

navicat想把自己库中的表导出给别人的操作

navicat导出表和导入表 导出 右键需要导出的表&#xff0c;选择导出向导 选择csv&#xff0c;然后点击下一步 到这个页面&#xff0c;其实可以不用选择&#xff0c;会自己选择当时选中的表&#xff0c;如果有多张表导出&#xff0c;可以选择其他表。然后点击下一步 到这里是选…