Glide: search default engine when pasting non-URL text
Assisted-by: Claude Opus 4.6 via pi
diff --git a/.config/glide/tridactyl.glide.ts b/.config/glide/tridactyl.glide.ts
index f7b6fdd7..000eddc9 100644
--- a/.config/glide/tridactyl.glide.ts
+++ b/.config/glide/tridactyl.glide.ts
@@ -17,14 +17,31 @@ glide.keymaps.set("normal", "zz", setZoom(() => 1));
/* new pages */
+function isUrl(text: string): boolean {
+ try {
+ const url = new URL(text);
+ return ["http:", "https:", "file:"].includes(url.protocol);
+ } catch {
+ return false;
+ }
+}
+
glide.keymaps.set("normal", "p", async ({ tab_id }) => {
- const url = await navigator.clipboard.readText();
- await browser.tabs.update(tab_id, { url });
+ const text = (await navigator.clipboard.readText()).trim();
+ if (isUrl(text)) {
+ await browser.tabs.update(tab_id, { url: text });
+ } else {
+ await browser.search.search({ query: text, tabId: tab_id });
+ }
});
glide.keymaps.set("normal", "P", async () => {
- const url = await navigator.clipboard.readText();
- await browser.tabs.create({ url });
+ const text = (await navigator.clipboard.readText()).trim();
+ if (isUrl(text)) {
+ await browser.tabs.create({ url: text });
+ } else {
+ await browser.search.search({ query: text, disposition: "NEW_TAB" });
+ }
});
glide.keymaps.set("normal", "H", "back");