summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-client/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-client/src')
-rw-r--r--packages/meshbay-client/src/main.js11
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