App

Mutto: um botão para o seu microfone, em qualquer app

Um atalho, ou um toque no celular, silencia o microfone do Windows 11 em qualquer app de chamada, com o estado sempre à vista. Na Microsoft Store.

Testar grátisMutto: um botão para o seu microfone, em qualquer app (abre em nova aba)

7 dias grátis, sem cartão. Depois R$ 29,90, uma vez só.

Criador e desenvolvedor
Mutto: um botão para o seu microfone, em qualquer app

Criei o Mutto porque vivia ouvindo "você tá no mudo" em reunião, no Teams, no Meet e no Zoom. Cada app de chamada tem o seu botão, e nenhum vale para os outros. O Mutto é um botão só para o microfone, em qualquer app: um atalho (Ctrl+Shift+M por padrão) ou um toque no celular silencia o microfone do Windows 11, e o estado fica sempre à vista.

O que ele faz

  • Silencia em qualquer app. O mudo é o do próprio Windows, então Teams, Meet, Zoom, Discord e Slack recebem silêncio.
  • O estado sempre à vista. Um aviso no topo da tela, o ícone vermelho na bandeja, um som de confirmação e, se você quiser, um indicador fixo num canto, que não aparece nas capturas de tela.
  • O celular vira o botão. Lê um QR e pronto: sem instalar nada, pela rede Wi-Fi, sem passar pela internet.
  • Teams e Meet por dentro. Com a integração oficial do Teams e a extensão para Chrome e Edge no Meet, o atalho também cuida da câmera e de sair da reunião (no Teams, de levantar a mão), e o ícone de mudo da reunião acompanha.
  • Segurar para falar e segurar para tossir, quando você só precisa de um segundo.
  • Mudo ao travar o PC, e ao destravar volta como estava.
  • Acessível. Narrador e NVDA anunciam "Microfone mudo" e "Microfone aberto" a cada mudança, venha de onde vier.
  • Não grava nem escuta áudio, não pede conta e fala português e inglês.

Como foi construído

Daqui para baixo é a parte técnica: as decisões e a arquitetura por trás do produto.

A regra que manda em tudo: nunca mentir sobre o microfone

Um app de mudo tem uma falha pior do que não funcionar: dizer "mudo" com o microfone aberto. Por isso a tela nunca decide nada sozinha. O estado tem um dono só, a classe EstadoDoMic, e o que aparece é sempre o que o Windows confirmou.

  • Um gesto não muda a tela. Ele só pede ao Windows. O estado novo chega pelo mesmo caminho de uma mudança feita por fora, então não há duas versões da verdade.
  • Desconhecido nunca vira mudo. Se o microfone falha, o app diz que não sabe, em âmbar, e explica o motivo.
  • Trocar de microfone não abre o seu mudo. Com o app mudo, o microfone novo já entra silenciado, porque o pedido vale para o que estiver em uso.
  • Se o Mutto cair, o mudo fica. Um processo vigia, o mesmo executável com outro argumento, espera o app sair. Se foi queda e o último estado era mudo, ele garante o mudo e reabre o app, com limite de três reaberturas em dois minutos para não entrar em laço.

Decisões que valeram a pena

O mudo do Windows é a verdade, as integrações só acompanham. Silenciar o dispositivo funciona em qualquer app, na hora e sem integração nenhuma. O preço está em outro lugar: o Windows não tem um "desligar câmera" global sem administrador, então câmera e sair da reunião só existem onde há integração, hoje no Teams e no Meet.

Uma página servida pelo próprio app, em vez de um app de celular. Nada para instalar, nada na nuvem. O caminho óbvio em .NET era o HttpListener, mas escutar fora de localhost com ele pede administrador, e o Mutto instala por usuário. Virou um TcpListener com um HTTP mínimo e WebSocket.CreateFromStream, que ainda roda e testa no Linux. O custo é ficar em HTTP na rede local, sem certificado, e o que exige HTTPS no navegador fica de fora. Só entra quem leu o QR, que leva um segredo gerado pelo PC.

Portas escolhidas depois de um bug real. As primeiras caíam na faixa que Hyper-V, WSL e Docker reservam, e o servidor não subia. Agora ele tenta uma lista abaixo dessa faixa e, se nenhuma abrir, os Ajustes dizem o motivo.

No Meet, a conexão sai do service worker da extensão. O Meet não tem API local, então a extensão lê e aciona os botões da reunião. Aberta pela própria página, a conexão com o app sairia com a origem do Meet e cairia nas regras de rede local do Chrome. Do service worker, a origem é a da extensão, e o app recusa sites. O risco de depender da página de outra empresa continua: é o preço de não existir API.

Arquitetura

  • Tudo que não precisa de janela mora nos *.Core e tem teste, rodando também no Linux. O Mutto.App só cola WinUI e Win32 por cima.
  • Base herdada do Doca, sem cópia. O Suite.* guarda licença, atualização, idiomas e atalhos, e nada ali cita o Mutto: cada produto se descreve num Produto.
  • Metas que bloqueiam versão. tools/medir.ps1 confere no build AOT publicado as metas de atalho até o mudo (50 ms), abertura a frio (400 ms) e memória (40 MB). Meta estourada vale como teste quebrado.
  • Native AOT, x64 e ARM64, empacotado como MSIX para a Microsoft Store. Win32 e COM por CsWin32, sem DllImport à mão.

Números

  • Do primeiro commit ao primeiro beta (0.9.0): um dia (11 e 12 de outubro de 2026).
  • 288 commits entre 11 e 29 de outubro de 2026.
  • ~25 mil linhas de C# (17,7 mil em src, 7 mil em testes).
  • 485 testes (métodos [Fact] e [Theory]).
  • Nove versões no changelog, da 0.9.0 à 0.9.8, em português e inglês.
Ficha técnica
Papel
Criador e desenvolvedor
Stack

C# · .NET 10 · WinUI 3 · Win32 (CsWin32) · Native AOT · MSIX · xUnit · Chrome Extension (Manifest V3)

Status
ativo

Quer experimentar o Mutto?

7 dias grátis, sem cartão. Depois R$ 29,90, uma vez só.

Testar grátisMutto: um botão para o seu microfone, em qualquer app (abre em nova aba)

Veja também