feat: launcher keyboard nav

Using currentitem and highlight
Also fix not closing launcher when clicking app
Apps service use only one process
This commit is contained in:
2 * r + 2 * t 2025-05-02 23:35:22 +10:00
parent 6b848b0f56
commit 587c3a7bc9
3 changed files with 20 additions and 15 deletions

View file

@ -10,6 +10,7 @@ ListView {
required property int padding
required property string search
required property Scope launcher
model: ScriptModel {
values: Apps.fuzzyQuery(root.search)
@ -26,10 +27,16 @@ ListView {
anchors.bottom: parent.bottom
anchors.margins: root.padding
highlightMoveDuration: Appearance.anim.durations.normal
highlight: StyledRect {
radius: Appearance.rounding.normal
color: Appearance.alpha(Appearance.colours.m3surfaceContainerHighest, true)
}
delegate: AppItem {
launcher: root.launcher
}
// TODO highlight
ScrollBar.vertical: StyledScrollBar {
// Move half out

View file

@ -37,6 +37,7 @@ Item {
padding: root.padding
search: search.text
launcher: root.launcher
}
EmptyIndicator {
@ -73,6 +74,9 @@ Item {
}
}
Keys.onUpPressed: list.decrementCurrentIndex()
Keys.onDownPressed: list.incrementCurrentIndex()
Keys.onEscapePressed: root.launcher.launcherVisible = false
Connections {
@ -81,8 +85,10 @@ Item {
function onLauncherVisibleChanged(): void {
if (root.launcher.launcherVisible)
search.forceActiveFocus();
else
else {
search.text = "";
list.currentIndex = 0;
}
}
}
}

View file

@ -5,7 +5,6 @@ import "root:/widgets"
import "root:/config"
import Quickshell
import Quickshell.Io
import QtQuick
Singleton {
id: root
@ -24,22 +23,15 @@ Singleton {
}
function launch(entry: DesktopEntry): void {
launchProc.createObject(root, {
entry
});
launchProc.entry = entry;
launchProc.startDetached();
}
Component {
Process {
id: launchProc
Process {
required property DesktopEntry entry
property DesktopEntry entry
command: ["app2unit", "--", `${entry.id}.desktop`]
Component.onCompleted: {
startDetached();
destroy();
}
}
command: ["app2unit", "--", `${entry.id}.desktop`]
}
}