You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下Electron窗口视口偏小1px,如何实现1920x1080视口?

Linux下Electron窗口视口比设置值小1px的解决方法

在1920x1080分辨率的Linux系统中,创建无边框Electron窗口时,设置1920x1080尺寸后实际视口为1919x1079,这是因为部分Linux窗口管理器会对无边框窗口添加1px的隐形布局调整,导致视口尺寸被压缩。以下是可行的解决配置:

核心配置:启用useContentSize选项

在BrowserWindow构造函数中添加useContentSize: true,该选项会让窗口的尺寸直接对应网页内容的视口尺寸,而非包含窗口框架(即使frame: false也生效),绕开窗口管理器的额外调整。

修改后的代码示例:

const { app, BrowserWindow } = require('electron')
const path = require('node:path')

function createWindow () {
  const mainWindow = new BrowserWindow({
    frame: false,
    show: false,
    width: 1920,
    height: 1080,
    useContentSize: true,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  mainWindow.loadFile('index.html')

  mainWindow.show()
}

app.whenReady().then(() => {
  createWindow()

  app.on('activate', function () {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

备选方案:延迟设置窗口尺寸

如果上述配置仍有问题,可以在窗口ready-to-show事件触发后再设置尺寸,确保窗口初始化完成后再调整:

function createWindow () {
  const mainWindow = new BrowserWindow({
    frame: false,
    show: false,
    useContentSize: true,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  mainWindow.loadFile('index.html')

  mainWindow.on('ready-to-show', () => {
    mainWindow.setBounds({ x: 0, y: 0, width: 1920, height: 1080 })
    mainWindow.show()
  })
}

极端情况补充

若窗口管理器限制严格,可尝试添加enableLargerThanScreen: true选项,允许窗口尺寸超过屏幕边界,强制达到设置的尺寸:

const mainWindow = new BrowserWindow({
  frame: false,
  show: false,
  width: 1920,
  height: 1080,
  useContentSize: true,
  enableLargerThanScreen: true,
  webPreferences: {
    preload: path.join(__dirname, 'preload.js')
  }
})

内容的提问来源于stack exchange,提问作者Žilvinas Rudžionis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:07:45