diff options
Diffstat (limited to 'packages/meshbay-client/src/main.js')
| -rw-r--r-- | packages/meshbay-client/src/main.js | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/packages/meshbay-client/src/main.js b/packages/meshbay-client/src/main.js index 0517eba..91fc4fa 100644 --- a/packages/meshbay-client/src/main.js +++ b/packages/meshbay-client/src/main.js @@ -30,6 +30,16 @@ const os = require('node:os'); const path = require('node:path'); const { pathToFileURL } = require('node:url'); +// Linux window managers/desktop shells (GNOME's dash included) group and +// icon-match a running window by its WM_CLASS, resolved against an installed +// .desktop file's StartupWMClass — not against BrowserWindow's `icon` option, +// which only sets the window's own icon (titlebar/alt-tab). Unpackaged, the +// class defaults to "electron" and nothing matches it, so the shell falls +// back to the generic Electron icon. A packaged build gets a correct +// StartupWMClass from electron-builder automatically; this switch keeps dev +// runs (`electron .`) consistent with it. +app.commandLine.appendSwitch('class', 'MeshBay'); + const UI_DIR = path.join(__dirname, '..', 'ui'); const SCHEME = 'app'; @@ -280,6 +290,7 @@ function createWindow() { ...bounds, minWidth: 320, show: false, + icon: path.join(__dirname, '..', 'build', 'icon.png'), webPreferences: { // The three that matter. `sandbox` keeps the Chromium renderer sandbox — // the strongest one available, and the reason Electron is not the |