DEV Community

Guilherme Yamakawa de Oliveira
Guilherme Yamakawa de Oliveira

Posted on • Originally published at guilherme44.com

[PT-BR] McLovin: o roteador de links multiplataforma

Semana passada escrevi que roteamento de links é a feature que SO e browser fingem não existir, e fechei dizendo que essa era de IA podia trazer um roteador multiplataforma decente, e que eu seria o divulgador número um. O multiplataforma ainda não saiu, mas a parte do Linux saiu. Lanço hoje o McLovin.

Igual no Superbad, o McLovin se dá bem com o Sistema Operacional (Oficial Slater) e os browsers (Oficial Michaels). Amigo dos dois, ele direciona cada link pro lugar certo.

Menu principal do McLovin com browsers detectados e badge de update
Menu principal da GUI

Por que o McLovin existe?

No Mac eu usava o Finicky. Migrei pro Linux com o Omarchy faz quase um ano e fui procurar equivalente. O Junction só pergunta a cada link, o mimi não tem regras de roteamento. Sobrava o caminho do "monta o teu", e eu montei. Funcionou muito bem, fiz uma TUI que combinava com o Omarchy. Aí pensei: isso aqui deveria existir em todo SO por padrão, igual a regra que cada SO tem pra escolher qual app abre PDF. Então decidi fazer o McLovin do jeito certo: um roteador multiplataforma, configurável por qualquer pessoa, com picker de browser quando precisar e regras pra mandar cada link pro lugar certo.

No iOS e no Android, esse problema também existe, mas fica pra depois.

O que é

O McLovin se registra como o handler default do sistema pra http e https. Quando você clica em qualquer link, no Slack, no terminal, ou em qualquer outro app, o SO entrega a URL pro McLovin. Ele lê o rules.toml, decide pra onde mandar, despacha o app ou browser certo, e some.

Se nenhuma regra bater, abre um picker no estilo Walker pra você escolher entre os browsers detectados. Dois frontends compartilham o mesmo core em Rust: uma CLI pra automação e keybinds, e uma GUI (mclovin settings) pra mouse e teclado.

Picker do McLovin com browsers detectados
Picker quando nenhuma regra bate

As regras

As regras vivem no ~/.config/mclovin/rules.toml. São três tipos: substring, regex com reescrita, e Lua pra regras dinâmicas. Um exemplo curto:

fallback_browser = "brave"

[[handler]]
match = "github.com/empresa"
command = "chrome --profile-directory='Profile 1' {url}"
description = "GitHub do trabalho no Chrome do trabalho"

[[handler]]
match_regex = '^https?://open\.spotify\.com/(\w+)/([^?#/]+)'
rewrite = "spotify --uri=spotify:{1}:{2}"
description = "Spotify aberto direto no app desktop"

[[handler]]
match_lua = "ctx.url.host:find('work') and ctx.now.hour < 18"
command = "chrome --profile-directory='Profile 1' {url}"
description = "Links de trabalho dentro do horário comercial"
Enter fullscreen mode Exit fullscreen mode

O fallback_browser cobre o que não bate em nenhuma regra. O Lua roda num ambiente isolado (sem os.execute, sem loadfile) e recebe o contexto da URL, a hora atual, e o app que originou o clique. Receitas prontas pra colar saem com mclovin examples.

Lista de regras configuradas no McLovin
Lista de regras na GUI

Status

A versão alpha pra Linux já está funcionando. macOS e Windows vêm em breve. Pra qualquer problema, abra uma issue no GitHub do mclovin-release.

Onde ver

O manual de instalação, configuração e exemplos de regras está no site oficial:

mclovin.org

Finalizando

No post passado escrevi "eu, além de usar, seria o divulgador número um" de um roteador multiplataforma decente. Estou divulgando o meu. Falta o multiplataforma, mas no Linux já está entregue.


Publicado originalmente em guilherme44.com.

Top comments (0)