tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definiciones

⎇ main recipes/atuq/extensions/inicio/inicio.js JavaScript · 33 líneas · 1.4 KB Historia Quién tocó qué crudo

firefox: RLBox ENCENDIDO — --without-wasm-sandboxed-libraries -> --with-wasi-sysroot ff0b5567d · Sergio ·

1// Qué hace la barra: si lo tecleado PARECE una dirección, navega; si no, busca.
2//
3// La búsqueda va por `browser.search.query`, que usa el motor por defecto DEL USUARIO. Es
4// deliberado no cablear ningún buscador acá: una distro que hornea su motor en la página de inicio
5// está tomando por el usuario la única decisión que esa página debería respetar.
6const f = document.getElementById("f");
7const q = document.getElementById("q");
8
9// «Parece una dirección» sin adivinar de más: un esquema explícito, algo con punto y sin espacios,
10// o localhost. Todo lo demás es una búsqueda. Un heurístico más listo se equivoca más.
11function esDireccion(t) {
12  if (/^[a-z][a-z0-9+.-]*:\/\//i.test(t)) return true;
13  if (/^(about|file|moz-extension):/i.test(t)) return true;
14  if (/^localhost(:\d+)?(\/|$)/i.test(t)) return true;
15  return /^[^\s/]+\.[^\s/]{2,}(\/|$|:)/.test(t);
16}
17
18f.addEventListener("submit", (e) => {
19  e.preventDefault();
20  const t = q.value.trim();
21  if (!t) return;
22  if (esDireccion(t)) {
23    location.href = /:\/\//.test(t) || /^(about|file|moz-extension):/i.test(t) ? t : "https://" + t;
24  } else {
25    browser.search.query({ text: t, disposition: "CURRENT_TAB" });
26  }
27});
28
29// Decir CUÁL es el motor por defecto, en vez de que la búsqueda sea una caja negra.
30browser.search.get().then((ms) => {
31  const d = ms.find((m) => m.isDefault);
32  if (d) document.getElementById("motor").textContent = "busca con " + d.name;
33}).catch(() => {});