Skip to main content

Command Palette

Search for a command to run...

Criando uma extensão de navegador

Como construí a extensão "Proton Launcher Unofficial" para Chrome e navegadores similares

Updated
3 min read
Criando uma extensão de navegador

Uma extensão que permite iniciar rapidamente os sites do Proton a partir de uma grade personalizável, com status de conexão e atalhos.

Captura de tela da extensão Proton Launcher

Primeiro de tudo, não sou afiliado à Proton AG. Mas se quiserem me contratar, é só ligar.

Esta extensão é um projeto independente, sem vínculos com a Proton AG ou seus produtos oficiais. Esta extensão é para acessar serviços Proton, apenas um pop-up com links para serviços Proton.

Observação: criei isso para ser usado como um modelo para qualquer pessoa criar uma extensão personalizada para acessar qualquer outro serviço web. Basta editar o config.json e colocar algumas imagens.

Por quê? Então, por que não! Mas não era só para salvar nos favoritos? Sim. No entanto, eu queria criá-lo.

Sim, coloquei capturas de tela do Brave Browser na Google Chrome Web Store ;-)

Captura de tela da extensão Proton Launcher

Instalação

Só para usar:
encontre na Chrome Web Store: https://chromewebstore.google.com/detail/proton-launcher-unofficia/ajniphjinhppblnkeolojgopecjlnecn

Para desenvolvedores:
Baixe ou clone este repositório: https://github.com/Esl1h/proton-launcher-extension

No seu Chrome/Brave, vá para chrome://extensions e habilite o modo desenvolvedor.

Clique em “Carregar descompactado” e selecione a pasta do projeto git.

project/ 
├── manifest.json # extension manifest file 
│
├── background # service worker for events and integrations 
│ └── background.js 
│
├── config # configuration files 
│ ├── apps.json 
│ └── settings.json 
│
├── popup # launcher interface 
│ ├── popup.css 
│ ├── popup.html 
│ └── popup.js 
│
├── assets 
  ├── icons 
  │ ├── icon128.png 
  │ ├── icon16.png 
  │ └── icon48.png 
  └── proton-logo.svg

Edite os arquivos em config/ para personalizar os aplicativos e preferências padrão. As configurações do usuário são salvas automaticamente.

Atalhos
Ctrl+Shift+L – Abra rapidamente o lançador

A arquitetura segue um padrão MVC simplificado, onde popup.html serve como interface visual, popup.js atua como controlador gerenciando lógica e estado de interação e background.js funciona como service worker para operações em segundo plano.

A estrutura de dados é minimalista: cada favorito é armazenado como um objeto, tudo mantido em uma matriz sob a chave de favoritos.

Manifest V3 define permissões (nenhuma neste meu caso!) e declara uma CSP (Política de Segurança de Conteúdo) restritiva, garantindo proteção contra XSS.

O manifest.json define permissões, ícones, scripts e o pop-up (popup.html + popup.js) exibido quando o usuário interage com o ícone de extensão. Resumindo: um manifest.json (modelo) obrigatório, o pop-up (CSS + HTML) e o núcleo — JavaScript simples (sem frameworks) que manipula o carregamento de links/ícones, validação de URL e renderização.

Há também um script em segundo plano (background.js) que funciona como um trabalhador persistente, mas executa uma inicialização limpa — a ideia é mantê-lo para uso futuro. A interface pop-up lê os aplicativos configurados (config/apps.json), os exibe em uma grade clicável e abre o link em uma nova aba (minha intenção era — ou é? — abrir o webapp/PWA).

aplicativos.json: Cada ícone tem um título, ícone, URL, posição e descrição. Optei por ocultar a descrição na exibição, mas a mantive no JSON.

configurações.json: Tamanho da grade, intervalo de atualização e um único tema chamado gradiente.


É isso. Não há muito a dizer sobre isso... foi um dos meus pequenos projetos de fim de semana.

Ele foi criado para ser simples, rápido, seguro e fácil... tanto para alterar quanto para usar como modelo inicial para criar algo maior.

Não está completo, a ideia (há um ícone de configuração na interface pop-up) seria uma página que você pode preencher com os links desejados (e opcionalmente um ícone se não quiser o favicon ou o padrão de alguma biblioteca de ícones js).

Packing (crx) e envio para Web Store

Ah, antes de terminar, para enviar a extensão para a Chrome Web Store, você precisa acessar o painel do desenvolvedor (custa US$ 5 para ativar) em https://chrome.google.com/webstore/devconsole/.

Crie um novo item, preencha todos os campos para requisitos, descrição e informações e carregue o arquivo .zip.

Para criar o arquivo .crx, vá diretamente ao navegador, abra o gerenciador de extensões e selecione a opção “pack extension” (após ativar o modo de desenvolvedor, é claro).

Tech

Part 10 of 50

Technical topics. Code, Linux, Network... Exercising the Tech Writer and teacher in me. Articles covering topics from across the entire OSI layer. Artigos passando por assuntos de toda a camada OSI.

Up next

Escolhendo a melhor ferramenta de idioma e escrita

Analisando e comparando ProWritingAid, Grammarly, Ginger, LanguageTool e QuillBot.