fix: resolve desktop entry launch failure and hide Electron menu bar on Linux

- Add --ozone-platform-hint=auto before app.whenReady() so Electron
  auto-detects X11 vs Wayland when launched from a desktop entry where
  the display protocol is not guaranteed (fixes immediate crash on
  Fedora/GNOME Wayland sessions)
- Add autoHideMenuBar: true to BrowserWindow so the default Chromium
  File/Edit/View/Help menu bar is hidden by default (still accessible
  via Alt); removes visible Electron significance from the packaged app
- Add scripts/rpm-after-install.sh and wire it via afterInstall in the
  electron-builder RPM config to chmod 4755 chrome-sandbox, ensuring
  the setuid sandbox works on kernels with restricted user namespaces

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DhanushSantosh
2026-02-26 10:53:58 +05:30
parent 6408f514a4
commit 46ee34d499
4 changed files with 18 additions and 1 deletions

View File

@@ -46,6 +46,9 @@ export function createWindow(): void {
contextIsolation: true,
nodeIntegration: false,
},
// Hide the default Electron/Chromium menu bar on Linux (File/Edit/View/Help).
// It still appears on Alt-press so keyboard-only users aren't locked out.
autoHideMenuBar: true,
// titleBarStyle is macOS-only; use hiddenInset for native look on macOS
...(process.platform === 'darwin' && { titleBarStyle: 'hiddenInset' as const }),
backgroundColor: '#0a0a0a',

View File

@@ -48,6 +48,13 @@ if (isDev) {
}
}
// On Linux, auto-detect X11 vs Wayland so the app launches correctly from
// desktop entries where the display protocol isn't guaranteed to be X11.
// Must be set before app.whenReady() — has no effect on macOS/Windows.
if (process.platform === 'linux') {
app.commandLine.appendSwitch('ozone-platform-hint', 'auto');
}
// Register IPC handlers
registerAllHandlers();