3 pontos por GN⁺ 2025-10-03 | 2 comentários | Compartilhar no WhatsApp
  • Uma nova abordagem que transforma o próprio navegador em uma ferramenta programável por meio de um arquivo de configuração em TypeScript baseado no Firefox
  • Permite implementar recursos ilimitados, como customização da UI do navegador e chamada de processos externos, sem as restrições de segurança das extensões web
  • Oferece um sistema de modos e mapeamento de teclas no estilo Vim, permitindo navegação totalmente centrada no teclado sem usar o mouse
  • Traz por padrão recursos amigáveis para desenvolvedores, como modo de dicas, localizador difuso de abas e REPL, já validados em 6 meses de uso real
  • Versão alpha disponível para download no macOS e Linux, com compatibilidade total com extensões e fluxos de trabalho existentes do Firefox

Contexto de desenvolvimento do Glide

  • O desenvolvedor usava a extensão Tridactyl no Firefox e acabou enfrentando o problema das restrições fundamentais de segurança das extensões web
    • Em certos sites, como addons.mozilla.org, a extensão é completamente desativada e todos os mapeamentos de teclas deixam de funcionar
    • Também houve o problema de o Tridactyl não funcionar em uma página inicial personalizada
  • Essas restrições fazem parte do modelo de segurança essencial do navegador para proteger o usuário de extensões maliciosas, mas ao mesmo tempo limitam bastante a extensibilidade
  • Ao perceber a necessidade de um navegador verdadeiramente personalizável, capaz de ir da customização da própria UI até a chamada de ferramentas externas sem limitações, ele começou a desenvolver o Glide

Principais diferenciais do Glide

  • Controle total com base em um arquivo de configuração em TypeScript
    • É possível usar APIs e recursos que uma extensão web jamais conseguiria suportar
    • Como o usuário final escreve diretamente o arquivo de configuração, não há necessidade de impor restrições de segurança, o que cria um modelo de segurança fundamentalmente diferente
  • O que pode ser feito no arquivo de configuração
    • Definir mapeamentos de teclas personalizados
    • Acessar a API de extensões web
    • Executar processos externos arbitrários
    • Definir macros, entre outras coisas
  • Construído sobre o Firefox, então extensões e fluxos de trabalho existentes do Firefox continuam funcionando normalmente

Exemplos práticos de configuração

Clonagem automática de repositório do GitHub e abertura do editor

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" });  
  • Ao pressionar gC em uma página de repositório no GitHub, as seguintes ações são executadas automaticamente
    • Extrair o nome do proprietário e do repositório a partir da URL atual
    • Clonar o repositório em ~/github.com/$owner/$repo
    • Abrir o neovim no terminal kitty dentro do repositório clonado
  • Isso economiza alguns segundos em cada tarefa, e adicionar a configuração leva apenas alguns minutos

Troca rápida para a aba do calendário

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" });  
  • Com gc, é possível alternar instantaneamente para a aba do Google Calendar

Sistema de modos

  • Adota o conceito de modos do Vim, de modo que todo mapeamento de teclas fica associado a um modo específico
  • Alterna automaticamente de modo conforme a interação com o navegador
    • Modo normal: modo padrão
    • Modo insert: ao clicar em um elemento <input>, a troca acontece automaticamente para que os mapeamentos não interfiram na digitação
    • Modo ignore: alternado com Shift+Escape, usado quando um site entra em conflito com os mapeamentos de teclas

Navegação baseada em teclado

Modo de dicas

  • Pressione f para entrar no modo de dicas
  • Uma sobreposição de rótulos de texto aparece sobre todos os elementos clicáveis, como links e botões
  • Ao digitar o rótulo, o elemento correspondente recebe foco e é clicado
  • É possível operar uma página web inteira sem usar o mouse

Recursos preferidos pessoalmente

  • gI: coloca automaticamente o foco no maior campo de entrada visível da página; é um recurso que parece mágica
  • <space><space>: executa o localizador difuso de abas, facilitando encontrar abas perdidas
  • <c-i> e <c-o>: essenciais para a navegação entre abas anteriores
  • :repl: permite testar rapidamente alterações na configuração
  • Modo de dicas: útil quando você não quer esticar a mão até o mouse
  • UI no estilo which-key: uma interface que ajuda a lembrar vários mapeamentos de teclas

Estado atual e disponibilidade

  • Em uso diário há cerca de 6 meses
  • Ainda está em estágio alpha inicial, mas já pode ser baixado para macOS e Linux
  • Recomenda-se conferir o tutorial com o comando :tutor (ainda não está concluído)
  • Usuários de Linux ainda precisam descompactar e configurar manualmente, já que o navegador ainda não está nos repositórios de pacotes
  • Mais exemplos podem ser vistos no cookbook e nos dotfiles do desenvolvedor
  • Por ser uma versão alpha, nem todas as APIs ainda estão implementadas, mas o objetivo principal é oferecer controle total

2 comentários

 
shakespeares 2025-10-07

Parece que tem que usar de um jeito bem de nicho. As vantagens da GUI... a não ser que dê para usar de um jeito que compense isso..

 
GN⁺ 2025-10-03
Comentários do Hacker News
  • Não é totalmente a minha praia, mas achei refrescante terem feito um fork do Firefox em vez do Chromium. Agora já existem três forks do Firefox bem modificados, junto com Zen e Floorp
    • Também tem o Tor, então dá para incluir nessa tendência
    • Também existe o LibreWolf, e pessoalmente eu gostaria que esse fosse o padrão
  • Acho a ideia muito boa, e fiquei tranquilo ao ver o comentário de que ele é mantido acompanhando os patches de segurança
  • Também enfrentei as limitações do addons.mozilla.org ao usar o Vimium C. Não acontecia com frequência suficiente para eu trocar de navegador, mas me atrai mais a ideia de ferramentas que transformem todo o desktop Linux em algo centrado no teclado, como o homerow faz no macOS
  • Sou o autor, fiquem à vontade para perguntar qualquer coisa
    • Gostei da API de hints, especialmente por permitir colocar hints também em elementos do navegador. Mas imagino que usuários avançados vão querer selecionar vários tipos de elementos com o sistema de hints. Seria legal expandir isso para aceitar um seletor CSS e definir em quais elementos os hints aparecem. Por exemplo, o usuário poderia criar um comando para selecionar um elemento específico e copiar seu texto
    • Queria saber se há suporte a DRM. Gostaria de saber se dá para usar em sites comerciais de streaming como Netflix. Antes isso era um grande problema em forks do Firefox. Também queria saber como fica o Firefox Sync. E gostaria de perguntar se é possível fazer chamadas RPC a partir de processos externos. Por exemplo, carregar a URL, a lista ou o conteúdo das abas abertas no momento, ou controlar abas remotamente para navegar para outras URLs, algo que pudesse ser usado para integração com outros apps ou scripts. O Firefox é meio fraco nessa área. Por fim, queria saber qual é o nível de segurança
    • O projeto parece muito legal. Queria saber se o config é flexível o suficiente para configurar keybindings no estilo Helix/Kakoune
    • Gostaria de saber se o arquivo de config permite instalar extensões automaticamente e alterar configurações internas do Firefox. Eu configuro o resto dos meus programas com dotfiles, então seria ótimo se o Firefox também tivesse essa opção
  • Parece muito bom. Já uso há algum tempo uma combinação de Firefox com VimFX e um config.js complexo. Quando o pacote do NixOS for integrado, com certeza vou testar. Se você pretende continuar no Firefox ESR padrão, recomendo fortemente o VimFX. Vale ver https://github.com/akhodakivskiy/VimFx. A maior desvantagem do VimFX é a falta de documentação das APIs internas do Firefox. Para tarefas como gerenciamento de abas, eu tinha que fuçar o código-fonte diretamente, mesmo em coisas que seriam simples com a API WebExtensions. O que mais me anima no Glide é justamente a possibilidade de expor essas APIs no arquivo de config
  • ʕ•ᴥ•ʔ Encontrei isso no Bear Blog e estou usando de forma bem divertida. Estou testando como parte da minha stack de produtividade no trabalho, com barra lateral e abas fixadas configuradas como no meu Zen Browser. Também personalizei o CSS do glide-hint com userChrome.css para combinar com meu gosto estético. Vou continuar acompanhando e torcendo para que siga sendo um projeto incrível
    1. https://freeimage.host/i/KMQu3EQ
    2. https://freeimage.host/i/KMQAJ9t
    • Em média, quantas abas você costuma manter abertas ao mesmo tempo? Você não acha incômodo ter que encontrar abas só pelo favicon?
  • Não analisei a fundo a estrutura do código-fonte, mas sendo um fork do Firefox, fiquei curioso sobre como vocês pretendem integrar no futuro os patches de segurança e outras correções do Firefox
    • Isso foi implementado com um método automatizado de patching e adição de novos arquivos. Na hora do build, o código-fonte do Firefox é baixado e os patches são aplicados, então também é muito fácil atualizar a versão do Firefox. Na prática, isso permite atualizações frequentes, e estamos acompanhando o canal beta do Firefox
  • Finalmente o compact mode voltou, então sou muito grato por isso. Também fico feliz em ver mais um fork do Firefox, e esse conceito é bem interessante. Sou do tipo que usa vim em todo lugar, então com certeza quero experimentar por conta própria
    • Mas ao rolar com j/k, a movimentação não parece muito suave. Queria saber se existe alguma forma de deixar o scroll mais natural, talvez eu só tenha deixado isso passar na documentação
  • Achei bem legal. Tenho usado o Vimium no Chrome e fiquei satisfeito
    1. https://chromewebstore.google.com/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb
    • Queria saber se funciona também nas páginas chrome://. Isso sempre fez falta para mim na versão do Vimium para Firefox
  • Dei uma passada pela documentação e isso parece o navegador dos meus sonhos. Gosto do fato de ser baseado em Firefox, ter acesso completo à API WebExt e até permitir executar comandos fora do navegador. Era assim que eu queria que o Firefox Developer Edition fosse. Hoje mesmo vou testar sem falta