|
@@ -162,11 +162,24 @@ require('./api/protocol')
|
|
|
// Set main startup script of the app.
|
|
|
const mainStartupScript = packageJson.main || 'index.js'
|
|
|
|
|
|
+const KNOWN_XDG_DESKTOP_VALUES = ['Pantheon', 'Unity:Unity7', 'pop:GNOME']
|
|
|
+
|
|
|
+function currentPlatformSupportsAppIndicator() {
|
|
|
+ if (process.platform !== 'linux') return false
|
|
|
+ const currentDesktop = process.env.XDG_CURRENT_DESKTOP
|
|
|
+
|
|
|
+ if (!currentDesktop) return false
|
|
|
+ if (KNOWN_XDG_DESKTOP_VALUES.includes(currentDesktop)) return true
|
|
|
+ // ubuntu based or derived session (default ubuntu one, communitheme…) supports
|
|
|
+ // indicator too.
|
|
|
+ if (/ubuntu/ig.test(currentDesktop)) return true
|
|
|
+
|
|
|
+ return false
|
|
|
+}
|
|
|
+
|
|
|
// Workaround for electron/electron#5050 and electron/electron#9046
|
|
|
-if (process.platform === 'linux') {
|
|
|
- if (['Pantheon', 'Unity:Unity7', 'pop:GNOME'].includes(process.env.XDG_CURRENT_DESKTOP) || process.env.XDG_CURRENT_DESKTOP.includes('ubuntu')) {
|
|
|
- process.env.XDG_CURRENT_DESKTOP = 'Unity'
|
|
|
- }
|
|
|
+if (currentPlatformSupportsAppIndicator()) {
|
|
|
+ process.env.XDG_CURRENT_DESKTOP = 'Unity'
|
|
|
}
|
|
|
|
|
|
// Finally load app's main.js and transfer control to C++.
|