3 points par GN⁺ 2025-10-03 | 2 commentaires | Partager sur WhatsApp
  • Nouvelle approche basée sur Firefox qui transforme le navigateur lui-même en outil programmable via un fichier de configuration TypeScript
  • Permet une personnalisation illimitée de l’interface du navigateur, l’appel de processus externes, etc., sans les contraintes de sécurité des extensions web
  • Propose un système de modes et des associations de touches de style Vim pour une navigation entièrement au clavier, sans souris
  • Inclut par défaut des fonctions conviviales pour les développeurs comme le mode indices, un fuzzy finder d’onglets et un REPL, avec une validation en usage réel pendant 6 mois
  • Version alpha téléchargeable sur macOS et Linux, avec compatibilité complète avec les extensions et workflows Firefox existants

Contexte de développement de Glide

  • Le développeur utilisait l’extension Tridactyl sur Firefox lorsqu’il a rencontré le problème des contraintes de sécurité fondamentales des extensions web
    • Sur certains sites comme addons.mozilla.org, les extensions sont entièrement désactivées et toutes les associations de touches cessent de fonctionner
    • Tridactyl ne fonctionnait pas non plus sur sa page d’accueil personnalisée
  • Ces contraintes relèvent du modèle de sécurité indispensable du navigateur pour protéger les utilisateurs contre les extensions malveillantes, mais elles limitent fortement l’extensibilité
  • C’est ce constat qui a lancé le développement de Glide, avec l’idée d’un navigateur réellement personnalisable, sans restrictions, allant de la personnalisation de l’interface à l’appel d’outils externes

Différences clés de Glide

  • Contrôle total grâce à un fichier de configuration TypeScript
    • Donne accès à des API et fonctionnalités qu’une extension web ne pourra jamais prendre en charge
    • Comme l’utilisateur final écrit lui-même le fichier de configuration, il n’est pas nécessaire d’imposer les mêmes contraintes de sécurité : le modèle de sécurité est fondamentalement différent
  • Ce qu’il est possible de faire dans le fichier de configuration
    • Définir des associations de touches personnalisées
    • Accéder aux API d’extensions web
    • Exécuter des processus externes arbitraires
    • Définir des macros, etc.
  • Construit sur Firefox, ce qui permet de conserver les extensions et workflows Firefox existants tels quels

Exemples de configuration pratiques

Cloner automatiquement un dépôt GitHub et lancer l’éditeur

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" });  
  • Sur une page de dépôt GitHub, appuyer sur gC exécute automatiquement les actions suivantes
    • Extraire le propriétaire et le nom du dépôt à partir de l’URL courante
    • Cloner le dépôt dans ~/github.com/$owner/$repo
    • Ouvrir neovim dans le terminal kitty sur le dépôt cloné
  • Chaque opération fait gagner quelques secondes, pour seulement quelques minutes nécessaires à l’ajout de la configuration

Basculer rapidement vers l’onglet calendrier

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" });  
  • La touche gc permet de passer instantanément à l’onglet Google Calendar

Système de modes

  • Reprend le concept de modes de Vim, où chaque association de touches est liée à un mode spécifique
  • Changement automatique de mode selon l’interaction avec le navigateur
    • Mode normal : mode par défaut
    • Mode insert : activé automatiquement lors d’un clic sur un élément <input>, pour que les associations de touches n’interfèrent pas avec la saisie de texte
    • Mode ignore : activé avec Shift+Escape, utile quand un site web entre en conflit avec les associations de touches

Navigation au clavier

Mode indices

  • Appuyer sur f pour entrer en mode indices
  • Affiche une superposition de libellés textuels sur tous les éléments cliquables (liens, boutons, etc.)
  • Saisir un libellé permet de focaliser puis cliquer sur l’élément correspondant
  • Permet une interaction complète avec les pages web sans souris

Fonctions personnellement préférées

  • gI : focalise automatiquement le plus grand champ de saisie visible de la page, une fonction presque magique
  • <space><space> : lance le fuzzy finder d’onglets pour retrouver facilement un onglet perdu
  • <c-i> et <c-o> : essentiels pour la navigation dans les onglets précédents
  • :repl : permet de tester rapidement les modifications de configuration
  • Mode indices : pratique quand on n’a pas envie de tendre la main vers la souris
  • Interface de style which-key : rappelle les différentes associations de touches disponibles

État actuel et disponibilité

  • Utilisé au quotidien depuis environ 6 mois
  • Encore en phase alpha précoce, mais téléchargeable sur macOS et Linux
  • Il est recommandé de consulter le tutoriel avec la commande :tutor (il n’est pas encore terminé)
  • Les utilisateurs Linux doivent encore extraire l’archive et configurer l’application manuellement, car elle n’est pas encore publiée dans les dépôts de paquets
  • Davantage d’exemples sont disponibles dans le cookbook et les dotfiles du développeur
  • Comme il s’agit d’une version alpha, toutes les API ne sont pas encore implémentées, mais l’objectif principal reste d’offrir un contrôle total

2 commentaires

 
shakespeares 2025-10-07

Il semble qu’il faille l’utiliser de manière assez pointue. Les avantages de l’interface graphique... à condition de pouvoir l’utiliser au point de les compenser...

 
GN⁺ 2025-10-03
Avis Hacker News
  • Ce n’est pas totalement mon style, mais le fait d’avoir forké Firefox plutôt que Chromium me semble rafraîchissant. Il y a maintenant trois forks de Firefox fortement modifiés avec Zen et Floorp
    • Il y a aussi Tor, qu’on peut ajouter à cette tendance
    • Il y a aussi LibreWolf, et personnellement j’aimerais que ce soit la base par défaut
  • Je trouve l’idée vraiment bonne, et le commentaire expliquant que la maintenance se fait en suivant les correctifs de sécurité me rassure
  • J’ai moi aussi rencontré les limitations de addons.mozilla.org en utilisant Vimium C. Ce n’était pas assez fréquent pour me faire changer de navigateur, mais je suis plutôt attiré par des outils qui rendent l’ensemble du bureau Linux centré sur le clavier, comme ce que fait homerow sur macOS par exemple
  • Je suis l’auteur, n’hésitez pas à poser vos questions
    • J’aime bien l’API d’indices, surtout le fait qu’on puisse aussi mettre des indices sur les éléments du navigateur. Mais j’imagine que les utilisateurs avancés voudront sélectionner différents types d’éléments via le système d’indices. J’aimerais qu’il soit étendu pour pouvoir passer des sélecteurs CSS et spécifier quels éléments recevront des indices. Par exemple, un utilisateur pourrait créer une commande qui sélectionne un élément précis et en copie le texte
    • Je me demande s’il y a un support DRM. J’aimerais savoir si on peut l’utiliser sur des sites de streaming commerciaux comme Netflix. Par le passé, c’était un gros problème sur les forks de Firefox. Je me demande aussi ce qu’il en est de Firefox Sync. Et j’aimerais savoir s’il est possible d’effectuer des appels RPC depuis un processus externe. Par exemple, récupérer l’URL, la liste ou le contenu des onglets actuellement ouverts, ou contrôler un onglet à distance pour le faire naviguer vers une autre URL, afin de l’intégrer avec d’autres applis ou scripts. Firefox est plutôt faible dans ce domaine. Enfin, je me demande quel est son niveau de sécurité
    • Le projet a l’air vraiment génial. Je me demande si la config est assez flexible pour définir des raccourcis de style Helix/Kakoune
    • J’aimerais savoir si le fichier de config permet l’installation automatique d’extensions et la modification des réglages intégrés de Firefox. Je configure tous mes autres programmes avec des dotfiles, donc j’aimerais bien que Firefox propose aussi ce genre d’option
  • Ça a l’air vraiment excellent. J’utilise depuis un moment Firefox avec VimFX et un config.js assez complexe. Dès que le package NixOS sera fusionné, je l’essaierai. Si vous restez sur Firefox ESR par défaut, je recommande vivement VimFX. Voir https://github.com/akhodakivskiy/VimFx. Le plus gros défaut de VimFX, c’est le manque de documentation de l’API interne de Firefox. Pour gérer les onglets et d’autres tâches, il fallait fouiller directement dans le code source pour des choses qui seraient triviales avec l’API WebExtensions. Ce que j’attends le plus de Glide, c’est justement la possibilité d’utiliser ce type d’API depuis le fichier de config
  • ʕ•ᴥ•ʔ J’ai découvert ça sur Bear Blog et je m’amuse bien avec. Je le teste dans ma stack de productivité pour le travail, avec une configuration de barre latérale et d’onglets épinglés similaire à celle de mon Zen Browser. J’ai aussi thématisé le CSS de glide-hint selon mes goûts esthétiques via userChrome.css. Je vais continuer à suivre le projet en espérant qu’il continuera à produire des choses aussi cool
    1. https://freeimage.host/i/KMQu3EQ
    2. https://freeimage.host/i/KMQAJ9t
    • Je me demande combien d’onglets vous gardez ouverts en moyenne en même temps. Est-ce que vous trouvez parfois gênant de devoir repérer un onglet uniquement à partir de son favicon ?
  • Je n’ai pas examiné la structure du code source en profondeur, mais puisqu’il s’agit d’un fork de Firefox, je me demande comment vous comptez intégrer à l’avenir les correctifs de sécurité et autres modifications de Firefox
    • C’est implémenté avec un système de patchs automatisé et l’ajout de nouveaux fichiers. Le code source de Firefox est téléchargé au moment de la compilation puis les patchs sont appliqués, donc monter de version de Firefox est très simple. En pratique, cela permet des mises à jour fréquentes et le projet suit le canal bêta de Firefox
  • Merci énormément pour le retour du compact mode. Je suis aussi content de voir un fork de Firefox, et ce concept est très intéressant. J’utilise vim partout, donc je me dis qu’il faut absolument que je l’essaie moi-même
    • En revanche, quand on fait défiler avec j/k, le mouvement ne paraît pas très fluide. Je me demande s’il y a un moyen de rendre le défilement plus naturel (ou alors j’ai peut-être simplement raté l’info dans la documentation)
  • Je trouve ça plutôt cool. J’utilise Vimium sur Chrome et j’en étais satisfait
    1. https://chromewebstore.google.com/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb
    • Je me demande si ça fonctionne aussi sur les pages chrome://. C’est toujours là que la version Firefox de Vimium m’a laissé sur ma faim
  • J’ai parcouru la documentation, et ça ressemble au navigateur dont je rêvais. Le fait que ce soit basé sur Firefox, qu’il permette pleinement l’API WebExt, et qu’il puisse même exécuter des commandes externes me plaît beaucoup. J’aurais aimé que Firefox Developer Edition soit comme ça, et je vais clairement l’essayer dès aujourd’hui