Apps.qml
1 pragma Singleton 2 3 import "root:/utils/scripts/fuzzysort.js" as Fuzzy 4 import Quickshell 5 import Quickshell.Io 6 7 Singleton { 8 id: root 9 10 readonly property list<DesktopEntry> list: DesktopEntries.applications.values.filter(a => !a.noDisplay).sort((a, b) => a.name.localeCompare(b.name)) 11 readonly property list<var> preppedApps: list.map(a => ({ 12 name: Fuzzy.prepare(a.name), 13 comment: Fuzzy.prepare(a.comment), 14 entry: a 15 })) 16 17 function fuzzyQuery(search: string): var { // Idk why list<DesktopEntry> doesn't work 18 return Fuzzy.go(search, preppedApps, { 19 all: true, 20 keys: ["name", "comment"], 21 scoreFn: r => r[0].score > 0 ? r[0].score * 0.9 + r[1].score * 0.1 : 0 22 }).map(r => r.obj.entry); 23 } 24 25 function launch(entry: DesktopEntry): void { 26 launchProc.entry = entry; 27 launchProc.startDetached(); 28 } 29 30 Process { 31 id: launchProc 32 33 property DesktopEntry entry 34 35 command: ["app2unit", "--", `${entry?.id}.desktop`] 36 } 37 }