From 9c8d9aa97578725a19831709d32f597c8e5bb5d9 Mon Sep 17 00:00:00 2001
From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
Date: Tue, 14 Jan 2025 18:29:55 +1100
Subject: launcher: better empty text

---
 modules/launcher.tsx | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

(limited to 'modules/launcher.tsx')

diff --git a/modules/launcher.tsx b/modules/launcher.tsx
index 4b42328..5015b5b 100644
--- a/modules/launcher.tsx
+++ b/modules/launcher.tsx
@@ -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 fuzzysort from "fuzzysort";
 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 toplevel = self.get_toplevel();
     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"))}
         >
             <box name="empty" className="empty" halign={Gtk.Align.CENTER} valign={Gtk.Align.CENTER}>
-                <label className="icon" label="apps_outage" />
-                <label label="No results" />
+                <label className="icon" label="bug_report" />
+                <label
+                    label={bind(entry, "text").as(t =>
+                        t.startsWith(">") ? "No matching subcommands" : getEmptyTextFromMode(mode.get())
+                    )}
+                />
             </box>
             <box
                 vertical
-- 
cgit v1.2.3-freya

