Skip to content

Commit e08439b

Browse files
authored
fix: missing app icon for AppImage on Linux (#2190)
Closes #131 Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
1 parent e03e5eb commit e08439b

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

arduino-ide-extension/src/electron-main/arduino-electron-main-module.ts

+5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
} from '../common/protocol/ide-updater';
1616
import { IsTempSketch } from '../node/is-temp-sketch';
1717
import { ElectronArduino } from './electron-arduino';
18+
import { FixAppImageIcon } from './fix-app-image-icon';
1819
import { IDEUpdaterImpl } from './ide-updater/ide-updater-impl';
1920
import { ElectronMainApplication } from './theia/electron-main-application';
2021
import { ElectronMainWindowServiceImpl } from './theia/electron-main-window-service';
@@ -58,4 +59,8 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
5859
// eclipse-theia/theia#12500
5960
bind(TheiaMainApiFixFalsyHandlerId).toSelf().inSingletonScope();
6061
rebind(TheiaMainApi).toService(TheiaMainApiFixFalsyHandlerId);
62+
63+
// https://github.com/arduino/arduino-ide/issues/131
64+
bind(FixAppImageIcon).toSelf().inSingletonScope();
65+
bind(ElectronMainApplicationContribution).toService(FixAppImageIcon);
6166
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { environment } from '@theia/application-package/lib/environment';
2+
import { isOSX, isWindows } from '@theia/core/lib/common/os';
3+
import {
4+
ElectronMainApplication,
5+
ElectronMainApplicationContribution,
6+
} from '@theia/core/lib/electron-main/electron-main-application';
7+
import { injectable } from '@theia/core/shared/inversify';
8+
import { join } from 'node:path';
9+
10+
// Fixes no application icon for the AppImage on Linux (https://github.com/arduino/arduino-ide/issues/131)
11+
// The fix was based on https://github.com/eclipse-theia/theia-blueprint/pull/180.
12+
// Upstream: https://github.com/electron-userland/electron-builder/issues/4617
13+
@injectable()
14+
export class FixAppImageIcon implements ElectronMainApplicationContribution {
15+
onStart(application: ElectronMainApplication): void {
16+
if (isOSX || isWindows || environment.electron.isDevMode()) {
17+
return;
18+
}
19+
const windowOptions = application.config.electron.windowOptions;
20+
if (windowOptions && windowOptions.icon === undefined) {
21+
windowOptions.icon = join(
22+
__dirname,
23+
'..',
24+
'..',
25+
'resources',
26+
'icons',
27+
'512x512.png'
28+
);
29+
}
30+
}
31+
}

electron-app/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@
119119
"arduino-ide-electron-main.js",
120120
"src-gen",
121121
"lib",
122+
"resources/icons/512x512.png",
122123
"!**node_modules/**"
123124
],
124125
"extraResources": [

0 commit comments

Comments
 (0)