From 9108ea9b8a07a7ddd899d680b1a52e1ea2286bef Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 24 Mar 2025 19:21:04 +0200 Subject: [PATCH] fix(electron): disable the creation of desktop icon at runtime (closes #1488) --- config-sample.ini | 3 -- electron.ts | 3 -- src/services/app_icon.ts | 70 ---------------------------------------- 3 files changed, 76 deletions(-) delete mode 100644 src/services/app_icon.ts diff --git a/config-sample.ini b/config-sample.ini index baa026730..cde9ac7c4 100644 --- a/config-sample.ini +++ b/config-sample.ini @@ -8,9 +8,6 @@ noAuthentication=false # set to true to disable backups (e.g. because of limited space on server) noBackup=false -# Disable automatically generating desktop icon -# noDesktopIcon=true - [Network] # host setting is relevant only for web deployments - set the host on which the server will listen # host=0.0.0.0 diff --git a/electron.ts b/electron.ts index dc93e6688..0cd79375b 100644 --- a/electron.ts +++ b/electron.ts @@ -4,7 +4,6 @@ import electron from "electron"; import electronDebug from "electron-debug"; import electronDl from "electron-dl"; import sqlInit from "./src/services/sql_init.js"; -import appIconService from "./src/services/app_icon.js"; import windowService from "./src/services/window.js"; import tray from "./src/services/tray.js"; @@ -19,8 +18,6 @@ if ((await import("electron-squirrel-startup")).default) { // Adds debug features like hotkeys for triggering dev tools and reload electronDebug(); -appIconService.installLocalAppIcon(); - electronDl({ saveAs: true }); // needed for excalidraw export https://github.com/zadam/trilium/issues/4271 diff --git a/src/services/app_icon.ts b/src/services/app_icon.ts deleted file mode 100644 index 8bf8209f8..000000000 --- a/src/services/app_icon.ts +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; - -import path from "path"; -import resourceDir from "./resource_dir.js"; -import log from "./log.js"; -import os from "os"; -import fs from "fs"; -import config from "./config.js"; -import { isElectron } from "./utils.js"; - -const template = `[Desktop Entry] -Type=Application -Name=TriliumNext Notes -StartupWMClass=TriliumNext Notes -Icon=#APP_ROOT_DIR#/icon.png -Exec=#EXE_PATH# -Categories=Office -Terminal=false -`; - -/** - * Installs .desktop icon into standard ~/.local/share/applications directory. - * We overwrite this file during every run as it might have been updated. - */ -function installLocalAppIcon() { - if (!isElectron || ["win32", "darwin"].includes(os.platform()) || (config.General && config.General.noDesktopIcon)) { - return; - } - - if (!fs.existsSync(path.resolve(resourceDir.ELECTRON_APP_ROOT_DIR, "trilium-portable.sh"))) { - // simple heuristic to detect ".tar.xz" linux build (i.e., not flatpak, not debian) - // only in such case it's necessary to create an icon - return; - } - - const desktopDir = path.resolve(os.homedir(), ".local/share/applications"); - - fs.stat(desktopDir, function (err, stats) { - if (err) { - // Directory doesn't exist, so we won't attempt to create the .desktop file - return; - } - - if (stats.isDirectory()) { - const desktopFilePath = path.resolve(desktopDir, "trilium-notes.desktop"); - - fs.writeFile(desktopFilePath, getDesktopFileContent(), function (err) { - if (err) { - log.error("Desktop icon installation to ~/.local/share/applications failed."); - } - }); - } - }); -} - -function getDesktopFileContent() { - return template.replace("#APP_ROOT_DIR#", escapePath(resourceDir.ELECTRON_APP_ROOT_DIR)).replace("#EXE_PATH#", escapePath(getExePath())); -} - -function escapePath(path: string) { - return path.replace(/ /g, "\\ "); -} - -function getExePath() { - return path.resolve(resourceDir.ELECTRON_APP_ROOT_DIR, "trilium"); -} - -export default { - installLocalAppIcon -};