3 Punkte von GN⁺ 2025-10-03 | 2 Kommentare | Auf WhatsApp teilen
  • Ein neuer Ansatz auf Firefox-Basis, der den Browser selbst über eine TypeScript-Konfigurationsdatei zu einem programmierbaren Werkzeug macht
  • Ohne die Sicherheitsbeschränkungen von Web-Erweiterungen lassen sich Browser-UI anpassen, externe Prozesse aufrufen und praktisch unbegrenzte Funktionen umsetzen
  • Bietet ein Vim-artiges Modussystem und Key-Mappings und ermöglicht damit vollständig tastaturzentriertes Browsing ohne Maus
  • Stellt entwicklerfreundliche Funktionen wie Hint Mode, Tab-Fuzzy-Finder und REPL standardmäßig bereit; der Alltagseinsatz wurde über 6 Monate hinweg validiert
  • Alpha-Versionen für macOS und Linux stehen zum Download bereit und sind vollständig kompatibel mit bestehenden Firefox-Erweiterungen und Workflows

Hintergrund der Entwicklung von Glide

  • Der Entwickler nutzte in Firefox die Erweiterung Tridactyl und stieß dabei auf die grundlegenden Sicherheitsbeschränkungen von Web-Erweiterungen
    • Auf bestimmten Websites wie addons.mozilla.org werden Erweiterungen vollständig deaktiviert, sodass keine Key-Mappings funktionieren
    • Auch auf einer benutzerdefinierten Startseite trat das Problem auf, dass Tridactyl nicht funktionierte
  • Diese Einschränkungen sind zwar Teil des notwendigen Sicherheitsmodells des Browsers, um Nutzer vor bösartigen Erweiterungen zu schützen, begrenzen aber gleichzeitig die Erweiterbarkeit stark
  • Daraus entstand die Einsicht, dass ein wirklich anpassbarer Browser nötig ist, der von der Anpassung der Browser-UI bis zum Aufruf externer Tools alles ohne Einschränkungen ermöglicht, woraufhin die Entwicklung von Glide begann

Die wichtigsten Unterscheidungsmerkmale von Glide

  • Vollständige Kontrolle auf Basis einer TypeScript-Konfigurationsdatei
    • APIs und Funktionen sind nutzbar, die in Web-Erweiterungen niemals unterstützt werden könnten
    • Da Endnutzer die Konfigurationsdatei selbst schreiben, ist ein grundlegend anderes Sicherheitsmodell möglich, bei dem solche Einschränkungen nicht nötig sind
  • Mögliche Aktionen in der Konfigurationsdatei
    • Benutzerdefinierte Key-Mappings definieren
    • Auf die Web-Erweiterungs-API zugreifen
    • Beliebige externe Prozesse ausführen
    • Makros definieren usw.
  • Auf Firefox-Basis entwickelt, sodass bestehende Firefox-Erweiterungen und Workflows unverändert funktionieren

Praktische Konfigurationsbeispiele

GitHub-Repository automatisch klonen und Editor starten

glide.keymaps.set("normal", "gC", async () => {  
  // extract the owner and repo from a url like 'https://github.com/glide-browser/glide'  
  const [owner, repo] = glide.ctx.url.pathname.split("/").slice(1, 3);  
  if (!owner || !repo) throw new Error("current URL is not a github repo");  
  // * clone the current github repo to ~/github.com/$owner/$repo  
  // * start kitty with neovim open at the cloned repo  
  const repo_path = glide.path.join(glide.path.home_dir, "github.com", owner, repo);  
  await glide.process.execute("gh", ["repo", "clone", glide.ctx.url, repo_path]);  
  await glide.process.execute("kitty", ["-d", repo_path, "nvim"], { cwd: repo_path });  
}, { description: "open the GitHub repo in the focused tab in Neovim" });  
  • Auf einer GitHub-Repository-Seite führt das Drücken von gC automatisch Folgendes aus
    • Extrahiert Eigentümer und Repository-Namen aus der aktuellen URL
    • Klont das Repository nach ~/github.com/$owner/$repo
    • Öffnet neovim im kitty-Terminal im geklonten Repository
  • Das spart pro Vorgang einige Sekunden, während das Hinzufügen der Konfiguration nur wenige Minuten dauert

Schnell zu einem Kalender-Tab wechseln

glide.keymaps.set("normal", "gc", async () => {  
  const tab = await glide.tabs.get_first({ url: "https://calendar.google.com/*"; });  
  assert(tab && tab.id);  
  await browser.tabs.update(tab.id, { active: true });  
}, { description: "[g]o to [c]alendar.google.com" });  
  • Mit gc kann sofort zu einem Google-Kalender-Tab gewechselt werden

Modussystem

  • Übernimmt das Moduskonzept von Vim, bei dem alle Key-Mappings an einen bestimmten Modus gebunden sind
  • Automatischer Moduswechsel je nach Interaktion mit dem Browser
    • normal-Modus: Standardmodus
    • insert-Modus: Beim Klicken auf ein <input>-Element wird automatisch umgeschaltet, damit Key-Mappings die Texteingabe nicht stören
    • ignore-Modus: Umschalten mit Shift+Escape; nützlich, wenn eine Website mit den Key-Mappings kollidiert

Tastaturbasierte Navigation

Hint Mode

  • Mit der Taste f in den Hint Mode wechseln
  • Über allen anklickbaren Elementen (Links, Buttons usw.) werden Overlays mit Text-Labels angezeigt
  • Durch Eingabe des Labels wird das entsprechende Element fokussiert und angeklickt
  • Dadurch ist eine vollständige Bedienung der Webseite ohne Maus möglich

Persönlich bevorzugte Funktionen

  • gI: Setzt automatisch den Fokus auf das größte sichtbare Eingabefeld der Seite; fühlt sich fast magisch an
  • <space><space>: Startet den Tab-Fuzzy-Finder, um verlorene Tabs leicht wiederzufinden
  • <c-i> und <c-o>: Unverzichtbar für die Navigation durch vorherige Tabs
  • :repl: Schnelles Testen von Konfigurationsänderungen
  • Hint Mode: Praktisch, wenn man nicht zur Maus greifen möchte
  • which-key-artige UI: Eine Oberfläche, die an verschiedene Key-Mappings erinnert

Aktueller Stand und Verfügbarkeit

  • Seit etwa 6 Monaten täglich im Einsatz
  • Noch in einer frühen Alpha-Phase, aber für macOS und Linux verfügbar
  • Es wird empfohlen, das Tutorial über den Befehl :tutor aufzurufen (noch nicht vollständig fertiggestellt)
  • Linux-Nutzer müssen derzeit noch manuell entpacken und konfigurieren, da das Programm noch in keinem Paket-Repository enthalten ist
  • Weitere Beispiele gibt es im Cookbook und in den dotfiles des Entwicklers
  • Da es sich um eine Alpha-Version handelt, sind noch nicht alle APIs implementiert, aber das zentrale Ziel ist vollständige Kontrolle

2 Kommentare

 
shakespeares 2025-10-07

Man muss ihn wohl ziemlich nerdig nutzen. Wenn man die Vorteile einer GUI damit ausreichend ausgleichen kann ...

 
GN⁺ 2025-10-03
Hacker-News-Kommentare
  • Ganz mein Fall ist es nicht, aber dass hier statt Chromium ein Firefox-Fork verwendet wurde, wirkt erfrischend. Mit Zen und Floorp gibt es damit schon drei stark veränderte Firefox-Forks.
    • Tor kommt auch noch dazu, also gehört das ebenfalls zu diesem Trend.
    • LibreWolf gibt es auch, und persönlich würde ich mir wünschen, dass das der Standard wäre.
  • Ich finde die Idee wirklich gut, und der Kommentar, dass das Projekt durch Nachverfolgung von Sicherheits-Patches gepflegt wird, beruhigt mich.
  • Ich bin bei Vimium C ebenfalls auf die Einschränkungen von addons.mozilla.org gestoßen. Das passiert nicht oft genug, dass ich dafür den Browser wechseln würde, aber mehr reizt mich ein Tool, das gleich den ganzen Linux-Desktop keyboard-zentriert macht, so wie homerow es auf macOS tut.
  • Ich bin der Autor, fragt gern alles, was euch interessiert.
    • Die Hint-API gefällt mir, besonders dass man auch Browser-Elementen Hints geben kann. Ich denke aber, Power-User würden mit dem Hint-System gern verschiedene Arten von Elementen auswählen. Es wäre toll, wenn man die Funktion erweitern könnte, sodass sich per CSS-Selektor festlegen lässt, welche Elemente Hints bekommen. So könnte ein Nutzer zum Beispiel einen Befehl bauen, der ein bestimmtes Element auswählt und dessen Text kopiert.
    • Mich würde interessieren, ob DRM unterstützt wird, also ob man damit kommerzielle Streaming-Seiten wie Netflix nutzen kann. Das war bei Firefox-Forks früher oft ein großes Problem. Außerdem frage ich mich, wie es mit Firefox Sync aussieht. Und ich würde gern wissen, ob RPC-Aufrufe aus externen Prozessen möglich sind. Also etwa die URL, Liste oder Inhalte der aktuell geöffneten Tabs abzurufen oder Tabs fernzusteuern und auf andere URLs zu navigieren. Das wäre nützlich für die Integration mit anderen Apps oder Skripten. In diesem Bereich ist Firefox eher schwach. Und zuletzt würde mich interessieren, wie sicher das Ganze ist.
    • Das Projekt sieht richtig großartig aus. Mich würde interessieren, ob die Config flexibel genug ist, um Helix-/Kakoune-artige Keybindings einzurichten.
    • Ich würde gern wissen, ob sich über eine Config-Datei Erweiterungen automatisch installieren und eingebaute Firefox-Einstellungen ändern lassen. Den Rest meiner Programme richte ich alle über dotfiles ein, daher hätte ich so eine Option auch für Firefox gern.
  • Sieht wirklich großartig aus. Ich nutze seit einiger Zeit Firefox zusammen mit VimFX und einer komplexen config.js-Kombination. Wenn das NixOS-Paket gemergt wird, werde ich es auf jeden Fall ausprobieren. Falls du weiter das normale Firefox ESR nutzt, kann ich VimFX sehr empfehlen. Sieh dir dafür https://github.com/akhodakivskiy/VimFx an. Der größte Nachteil von VimFX ist die schlechte Dokumentation der internen Firefox-APIs. Für Dinge wie Tab-Verwaltung musste man sich direkt durch den Source Code graben, obwohl das mit der WebExtensions-API eigentlich leicht erledigt wäre. Genau darauf freue ich mich bei Glide am meisten: dass solche APIs in der Config-Datei nutzbar werden.
  • ʕ•ᴥ•ʔ Ich habe das im Bear Blog entdeckt und benutze es mit Spaß. Ich teste es gerade in meinem Produktivitäts-Stack für die Arbeit, mit einer Sidebar- und angepinnten-Tab-Konfiguration ähnlich wie in meinem Zen Browser. Das glide-hint-CSS habe ich außerdem über userChrome.css meinem ästhetischen Geschmack entsprechend angepasst. Ich werde das weiter im Blick behalten und hoffe, dass du weiter so coole Sachen baust.
    1. https://freeimage.host/i/KMQu3EQ
    2. https://freeimage.host/i/KMQAJ9t
    • Mich würde interessieren, wie viele Tabs du im Durchschnitt gleichzeitig offen hast. Ist es nicht manchmal unpraktisch, Tabs nur anhand der Favicons wiederzufinden?
  • Ich habe mir die Struktur des Source Codes nicht im Detail angesehen, aber bei einem Firefox-Fork würde mich interessieren, wie du künftig Sicherheits-Patches oder Fixes aus Firefox integrieren willst.
    • Das ist über einen automatisierten Patch-Ansatz und das Hinzufügen neuer Dateien umgesetzt. Beim Build wird der Firefox-Source-Code heruntergeladen und der Patch angewendet, deshalb ist auch ein Firefox-Upgrade sehr einfach. Tatsächlich sind dadurch häufige Updates möglich, weshalb wir dem Firefox-Beta-Kanal folgen.
  • Ich bin wirklich dankbar, dass der Compact Mode endlich zurück ist. Auch über einen Firefox-Fork freue ich mich, und das Konzept finde ich sehr spannend. Ich bin jemand, der überall vim benutzt, also muss ich das unbedingt selbst ausprobieren.
    • Allerdings fühlt sich das Scrollen mit j/k nicht ganz flüssig an. Gibt es vielleicht eine Möglichkeit, das natürlicher zu machen? Vielleicht habe ich es in der Doku auch einfach überlesen.
  • Ziemlich cool, finde ich. Ich habe in Chrome Vimium benutzt und war sehr zufrieden.
    1. https://chromewebstore.google.com/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb
    • Mich würde interessieren, ob es auch auf chrome://-Seiten funktioniert. Das war bei der Firefox-Version von Vimium immer ein Schwachpunkt.
  • Ich habe die Doku grob durchgesehen, und das hier wirkt wie genau der Browser, von dem ich immer geträumt habe. Firefox-basiert, vollständige WebExt-API-Unterstützung und sogar die Möglichkeit, Befehle außerhalb des Browsers auszuführen — das gefällt mir sehr. Ich wünschte, Firefox Developer Edition wäre so. Das muss ich heute unbedingt sofort ausprobieren.