From b71e65f90dbf8b5a25bab05aa01c5ca0d5b52e3a Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Wed, 23 Aug 2023 15:26:32 +0200 Subject: [PATCH 1/2] fix: missing app icon for AppImage on Linux Closes #131 Signed-off-by: Akos Kitta --- .../arduino-electron-main-module.ts | 5 +++ .../src/electron-main/fix-app-image-icon.ts | 31 +++++++++++++++++++ electron-app/package.json | 1 + 3 files changed, 37 insertions(+) create mode 100644 arduino-ide-extension/src/electron-main/fix-app-image-icon.ts diff --git a/arduino-ide-extension/src/electron-main/arduino-electron-main-module.ts b/arduino-ide-extension/src/electron-main/arduino-electron-main-module.ts index e02635423..04f8b50fa 100644 --- a/arduino-ide-extension/src/electron-main/arduino-electron-main-module.ts +++ b/arduino-ide-extension/src/electron-main/arduino-electron-main-module.ts @@ -15,6 +15,7 @@ import { } from '../common/protocol/ide-updater'; import { IsTempSketch } from '../node/is-temp-sketch'; import { ElectronArduino } from './electron-arduino'; +import { FixAppImageIcon } from './fix-app-image-icon'; import { IDEUpdaterImpl } from './ide-updater/ide-updater-impl'; import { ElectronMainApplication } from './theia/electron-main-application'; import { ElectronMainWindowServiceImpl } from './theia/electron-main-window-service'; @@ -58,4 +59,8 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => { // eclipse-theia/theia#12500 bind(TheiaMainApiFixFalsyHandlerId).toSelf().inSingletonScope(); rebind(TheiaMainApi).toService(TheiaMainApiFixFalsyHandlerId); + + // https://github.com/arduino/arduino-ide/issues/131 + bind(FixAppImageIcon).toSelf().inSingletonScope(); + bind(ElectronMainApplicationContribution).toService(FixAppImageIcon); }); diff --git a/arduino-ide-extension/src/electron-main/fix-app-image-icon.ts b/arduino-ide-extension/src/electron-main/fix-app-image-icon.ts new file mode 100644 index 000000000..6e1227929 --- /dev/null +++ b/arduino-ide-extension/src/electron-main/fix-app-image-icon.ts @@ -0,0 +1,31 @@ +import { environment } from '@theia/application-package/lib/environment'; +import { isOSX, isWindows } from '@theia/core/lib/common/os'; +import { + ElectronMainApplication, + ElectronMainApplicationContribution, +} from '@theia/core/lib/electron-main/electron-main-application'; +import { injectable } from '@theia/core/shared/inversify'; +import { join } from 'node:path'; + +// Fixes no application icon for the AppImage on Linux (https://github.com/arduino/arduino-ide/issues/131) +// The fix was based on https://github.com/eclipse-theia/theia-blueprint/pull/180. +// Upstream: https://github.com/electron-userland/electron-builder/issues/4617 +@injectable() +export class FixAppImageIcon implements ElectronMainApplicationContribution { + onStart(application: ElectronMainApplication): void { + if (isOSX || isWindows || environment.electron.isDevMode()) { + return; + } + const windowOptions = application.config.electron.windowOptions; + if (windowOptions && windowOptions.icon === undefined) { + windowOptions.icon = join( + __dirname, + '..', + '..', + 'resources', + 'icons', + '512-512.png' + ); + } + } +} diff --git a/electron-app/package.json b/electron-app/package.json index 3803fecbb..2a9e996a6 100644 --- a/electron-app/package.json +++ b/electron-app/package.json @@ -119,6 +119,7 @@ "arduino-ide-electron-main.js", "src-gen", "lib", + "resources/icons/512x512.png", "!**node_modules/**" ], "extraResources": [ From 3a459963f45c8b81884c0b662b4033dfe3420729 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Wed, 23 Aug 2023 17:30:46 +0200 Subject: [PATCH 2/2] fix: filename Signed-off-by: Akos Kitta --- arduino-ide-extension/src/electron-main/fix-app-image-icon.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arduino-ide-extension/src/electron-main/fix-app-image-icon.ts b/arduino-ide-extension/src/electron-main/fix-app-image-icon.ts index 6e1227929..ab8534596 100644 --- a/arduino-ide-extension/src/electron-main/fix-app-image-icon.ts +++ b/arduino-ide-extension/src/electron-main/fix-app-image-icon.ts @@ -24,7 +24,7 @@ export class FixAppImageIcon implements ElectronMainApplicationContribution { '..', 'resources', 'icons', - '512-512.png' + '512x512.png' ); } }