launcher: better empty text
This commit is contained in:
parent
b5648cf986
commit
9c8d9aa975
2 changed files with 24 additions and 3 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
import { bind, execAsync, Gio, register, timeout, Variable } from "astal";
|
import { bind, execAsync, Gio, GLib, register, timeout, Variable } from "astal";
|
||||||
import { Astal, Gtk, Widget } from "astal/gtk3";
|
import { Astal, Gtk, Widget } from "astal/gtk3";
|
||||||
import fuzzysort from "fuzzysort";
|
import fuzzysort from "fuzzysort";
|
||||||
import type AstalApps from "gi://AstalApps";
|
import type AstalApps from "gi://AstalApps";
|
||||||
|
|
@ -45,6 +45,17 @@ const getIconFromMode = (mode: Mode) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getEmptyTextFromMode = (mode: Mode) => {
|
||||||
|
switch (mode) {
|
||||||
|
case "apps":
|
||||||
|
return "No apps found";
|
||||||
|
case "files":
|
||||||
|
return GLib.find_program_in_path("fd") === null ? "File search requires `fd`" : "No files found";
|
||||||
|
case "math":
|
||||||
|
return "Type an expression";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const launchAndClose = (self: JSX.Element, astalApp: AstalApps.Application) => {
|
const launchAndClose = (self: JSX.Element, astalApp: AstalApps.Application) => {
|
||||||
const toplevel = self.get_toplevel();
|
const toplevel = self.get_toplevel();
|
||||||
if (toplevel instanceof Widget.Window) toplevel.hide();
|
if (toplevel instanceof Widget.Window) toplevel.hide();
|
||||||
|
|
@ -196,8 +207,12 @@ const Results = ({ entry, mode }: { entry: Widget.Entry; mode: Variable<Mode> })
|
||||||
shown={bind(empty).as(t => (t ? "empty" : "list"))}
|
shown={bind(empty).as(t => (t ? "empty" : "list"))}
|
||||||
>
|
>
|
||||||
<box name="empty" className="empty" halign={Gtk.Align.CENTER} valign={Gtk.Align.CENTER}>
|
<box name="empty" className="empty" halign={Gtk.Align.CENTER} valign={Gtk.Align.CENTER}>
|
||||||
<label className="icon" label="apps_outage" />
|
<label className="icon" label="bug_report" />
|
||||||
<label label="No results" />
|
<label
|
||||||
|
label={bind(entry, "text").as(t =>
|
||||||
|
t.startsWith(">") ? "No matching subcommands" : getEmptyTextFromMode(mode.get())
|
||||||
|
)}
|
||||||
|
/>
|
||||||
</box>
|
</box>
|
||||||
<box
|
<box
|
||||||
vertical
|
vertical
|
||||||
|
|
|
||||||
|
|
@ -81,8 +81,14 @@
|
||||||
|
|
||||||
.empty {
|
.empty {
|
||||||
color: scheme.$subtext0;
|
color: scheme.$subtext0;
|
||||||
|
font-size: lib.s(18);
|
||||||
|
padding: lib.s(10) 0;
|
||||||
|
|
||||||
@include lib.spacing;
|
@include lib.spacing;
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
color: scheme.$subtext0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.result {
|
.result {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue