1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Fix AppImage windows not showing the application icon (#6444)

Signed-off-by: Damien Degois <damien@degois.info>

Signed-off-by: Damien Degois <damien@degois.info>
This commit is contained in:
Damien Degois 2022-10-21 20:55:11 +02:00 committed by GitHub
parent c591f08bc4
commit 8bc5856b8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import { getGlobalOverride } from "../test-utils/get-global-override";
import applicationInformationInjectable from "./application-information.injectable";
export default getGlobalOverride(applicationInformationInjectable, () => ({
name: "some-product-name",
productName: "some-product-name",
version: "6.0.0",
build: {},

View File

@ -5,16 +5,16 @@
import { getInjectable } from "@ogre-tools/injectable";
import packageJson from "../../../package.json";
export type ApplicationInformation = Pick<typeof packageJson, "version" | "config" | "productName" | "copyright" | "description"> & {
export type ApplicationInformation = Pick<typeof packageJson, "version" | "config" | "productName" | "copyright" | "description" | "name"> & {
build: Partial<typeof packageJson["build"]> & { publish?: unknown[] };
};
const applicationInformationInjectable = getInjectable({
id: "application-information",
instantiate: (): ApplicationInformation => {
const { version, config, productName, build, copyright, description } = packageJson;
const { version, config, productName, build, copyright, description, name } = packageJson;
return { version, config, productName, build, copyright, description };
return { version, config, productName, build, copyright, description, name };
},
causesSideEffects: true,
});

View File

@ -9,6 +9,12 @@ import { BrowserWindow } from "electron";
import type { ElectronWindow } from "./create-lens-window.injectable";
import type { RequireExactlyOne } from "type-fest";
import openLinkInBrowserInjectable from "../../../../common/utils/open-link-in-browser.injectable";
import getAbsolutePathInjectable from "../../../../common/path/get-absolute-path.injectable";
import lensResourcesDirInjectable from "../../../../common/vars/lens-resources-dir.injectable";
import isLinuxInjectable from "../../../../common/vars/is-linux.injectable";
import fsInjectable from "../../../../common/fs/fs.injectable";
import applicationInformationInjectable from "../../../../common/vars/application-information.injectable";
export type ElectronWindowTitleBarStyle = "hiddenInset" | "hidden" | "default" | "customButtonsOnHover";
@ -45,6 +51,10 @@ const createElectronWindowInjectable = getInjectable({
instantiate: (di): CreateElectronWindow => {
const logger = di.inject(loggerInjectable);
const openLinkInBrowser = di.inject(openLinkInBrowserInjectable);
const getAbsolutePath = di.inject(getAbsolutePathInjectable);
const lensResourcesDir = di.inject(lensResourcesDirInjectable);
const isLinux = di.inject(isLinuxInjectable);
const applicationInformation = di.inject(applicationInformationInjectable);
return (configuration) => {
const applicationWindowState = di.inject(
@ -79,6 +89,23 @@ const createElectronWindowInjectable = getInjectable({
},
});
if (isLinux) {
const iconFileName = [
getAbsolutePath(lensResourcesDir, `../${applicationInformation.name}.png`),
`/usr/share/icons/hicolor/512x512/apps/${applicationInformation.name}.png`,
].find(di.inject(fsInjectable).existsSync);
if (iconFileName != null) {
try {
browserWindow.setIcon(iconFileName);
} catch (err) {
logger.warn(`Error while setting window icon ${err}`);
}
} else {
logger.warn(`No suitable icon found for task bar.`);
}
}
applicationWindowState.manage(browserWindow);
browserWindow