fix: missing app icon for AppImage on Linux (#2190)

Closes #131

Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
This commit is contained in:
Akos Kitta 2023-08-24 17:04:58 +02:00 committed by GitHub
parent e03e5eb603
commit e08439b6a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 0 deletions

View File

@ -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);
});

View File

@ -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',
'512x512.png'
);
}
}
}

View File

@ -119,6 +119,7 @@
"arduino-ide-electron-main.js",
"src-gen",
"lib",
"resources/icons/512x512.png",
"!**node_modules/**"
],
"extraResources": [