diff --git a/apps/ui/scripts/rpm-after-install.sh b/apps/ui/scripts/rpm-after-install.sh index 06f59500..ee4d9550 100644 --- a/apps/ui/scripts/rpm-after-install.sh +++ b/apps/ui/scripts/rpm-after-install.sh @@ -1,6 +1,14 @@ #!/bin/bash # Set the setuid bit on chrome-sandbox so Electron's sandbox works on systems # where unprivileged user namespaces are restricted (e.g. hardened kernels). -# On Fedora/RHEL with standard kernel settings this is not strictly required, -# but it is a safe no-op when not needed. +# On Fedora/RHEL with standard kernel settings this is a safe no-op. chmod 4755 /opt/Automaker/chrome-sandbox 2>/dev/null || true + +# Refresh the GTK icon cache so GNOME/KDE picks up the newly installed icon +# immediately without requiring a logout. The -f flag forces a rebuild even +# if the cache is up-to-date; -t suppresses the mtime check warning. +gtk-update-icon-cache -f -t /usr/share/icons/hicolor 2>/dev/null || true + +# Rebuild the desktop entry database so the app appears in the app launcher +# straight after install. +update-desktop-database /usr/share/applications 2>/dev/null || true diff --git a/apps/ui/src/electron/utils/icon-manager.ts b/apps/ui/src/electron/utils/icon-manager.ts index f6bdd529..7a0dda14 100644 --- a/apps/ui/src/electron/utils/icon-manager.ts +++ b/apps/ui/src/electron/utils/icon-manager.ts @@ -28,9 +28,11 @@ export function getIconPath(): string | null { } // __dirname is apps/ui/dist-electron (Vite bundles all into single file) + // In production the asar layout is: /dist-electron/main.js and /dist/logo_larger.png + // Vite copies public/ assets to the root of dist/, NOT dist/public/ const iconPath = isDev ? path.join(__dirname, '../public', iconFile) - : path.join(__dirname, '../dist/public', iconFile); + : path.join(__dirname, '../dist', iconFile); try { if (!electronAppExists(iconPath)) {