mirror of
https://github.com/zoriya/noctalia-shell.git
synced 2025-12-06 06:36:15 +00:00
53 lines
1.5 KiB
QML
53 lines
1.5 KiB
QML
pragma Singleton
|
|
|
|
import QtQuick
|
|
import Quickshell
|
|
|
|
Singleton {
|
|
id: root
|
|
|
|
function iconFromName(iconName, fallbackName) {
|
|
const fallback = fallbackName || "application-x-executable";
|
|
try {
|
|
if (iconName && typeof Quickshell !== 'undefined' && Quickshell.iconPath) {
|
|
const p = Quickshell.iconPath(iconName, fallback);
|
|
if (p && p !== "")
|
|
return p;
|
|
}
|
|
} catch (e)
|
|
|
|
// ignore and fall back
|
|
{}
|
|
try {
|
|
return Quickshell.iconPath ? (Quickshell.iconPath(fallback, true) || "") : "";
|
|
} catch (e2) {
|
|
return "";
|
|
}
|
|
}
|
|
|
|
// Resolve icon path for a DesktopEntries appId - safe on missing entries
|
|
function iconForAppId(appId, fallbackName) {
|
|
const fallback = fallbackName || "application-x-executable";
|
|
if (!appId)
|
|
return iconFromName(fallback, fallback);
|
|
try {
|
|
if (typeof DesktopEntries === 'undefined' || !DesktopEntries.byId)
|
|
return iconFromName(fallback, fallback);
|
|
const entry = (DesktopEntries.heuristicLookup) ? DesktopEntries.heuristicLookup(appId) : DesktopEntries.byId(appId);
|
|
const name = entry && entry.icon ? entry.icon : "";
|
|
return iconFromName(name || fallback, fallback);
|
|
} catch (e) {
|
|
return iconFromName(fallback, fallback);
|
|
}
|
|
}
|
|
|
|
// Distro logo helper (absolute path or empty string)
|
|
function distroLogoPath() {
|
|
try {
|
|
return (typeof OSInfo !== 'undefined' && OSInfo.distroIconPath) ? OSInfo.distroIconPath : "";
|
|
} catch (e) {
|
|
return "";
|
|
}
|
|
}
|
|
}
|