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 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 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"
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 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:
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.
Comentários