Como Parar de Abrir IDEs Pesadas Só Para Iniciar um Único Emulador

Se você desenvolve para plataformas mobile usando Flutter, React Native ou uma stack nativa, provavelmente conhece essa rotina. Você precisa verificar rapidamente o layout em um Pixel antigo ou um novo iPhone. Para fazer isso, você mantém o Android Studio e o Xcode famintos por recursos abertos, ou precisa lembrar da sintaxe de comandos para emulator -avd e xcrun simctl boot toda vez.
Recentemente descobri o simutil. É um pequeno utilitário com interface de usuário baseada em texto (TUI) que reúne todos os seus dispositivos virtuais e físicos em uma única janela de terminal.

O Que Esta Ferramenta Pode Fazer
A interface é dividida em painéis organizados. Você pode ver a lista de simuladores iOS, emuladores Android e dispositivos físicos conectados. A navegação funciona com as teclas de seta, sem necessidade de mouse.
Aqui estão cenários práticos onde a ferramenta economiza tempo:
- Inicialização com um clique. Selecione um dispositivo, pressione Enter e ele inicia em segundo plano.
- Seleção do modo de inicialização do Android. Pressionar Espaço abre um menu: inicialização normal, Cold Boot, inicialização sem som ou cold start sem áudio imediatamente.
- Conexão ADB sem fio. O utilitário pode conectar smartphones físicos via IP, um código de pareamento de seis dígitos ou através de um código QR diretamente no terminal.
- Visualizador de Logcat integrado. Você pode ler os logs do sistema do dispositivo Android selecionado e filtrá-los em tempo real sem sair do utilitário.
- Limpeza rápida do cache do Xcode. No macOS, pressionar a tecla
xmostrará o tamanho da pasta DerivedData e oferecerá a opção de excluí-la.

Plugins Personalizados via YAML
Um detalhe interessante: o autor não embutiu todas as ferramentas externas possíveis no binário, mas criou um sistema de plugins via configuração.
Na primeira execução, um arquivo ~/.simutil/settings.yaml é criado. Você pode descrever chamadas para qualquer utilitário de console nele, associando-os a atalhos de teclado. Por exemplo, é assim que fica uma integração pronta para uso com scrcpy para espelhamento de tela do Android:
theme: dark
last_selected_device_id: ~
plugins:
- id: scrcpy
label: scrcpy
description: Screen mirroring and control for Android
availability:
command: scrcpy
args: [--version]
commands:
- id: mirror
label: Screen Mirror
command: scrcpy
args: [-s, "{device.id}"]
platforms: [android]
requires_running: true
mode: detached
shortcut: s
Pressione s em um dispositivo em execução — a janela do scrcpy abre. A configuração suporta variáveis de substituição como {device.id} e {device.name}, então você pode facilmente adicionar execuções de testes do Maestro ou qualquer script bash personalizado. Para editar o arquivo de configurações, basta pressionar e dentro da interface.
Detalhes Técnicos
O projeto é escrito em Dart. A biblioteca Nocterm é usada para construir a interface do terminal, e sua sintaxe se assemelha muito à abordagem familiar baseada em widgets no Flutter.
Quanto às plataformas: o simutil funciona no macOS, Linux e Windows. Mas existem limitações de SO que não podem ser evitadas. Os simuladores iOS funcionam exclusivamente no macOS porque dependem de utilitários do sistema da Apple (simctl e devicectl). No Linux e Windows, o utilitário foca apenas em trabalhar com Android, Logcat e ADB sem fio.
Instalação e Configuração
Você pode instalar o simutil de várias maneiras.
Via Homebrew no macOS e Linux:
brew tap dungngminh/simutil
brew install simutil
Com um script de instalação universal:
curl -fsSL https://raw.githubusercontent.com/dungngminh/simutil/main/install.sh | bash
Para Windows via PowerShell:
powershell -ExecutionPolicy Bypass -Command "iwr -useb https://raw.githubusercontent.com/dungngminh/simutil/main/install.ps1 | iex"
Se você já tem o Dart SDK instalado:
dart pub global activate simutil
Após a instalação, execute o comando:
simutil
Para Quem Isso É Útil
A ferramenta vai agradar quem prefere editores leves como VS Code, Zed ou Neovim e não quer abrir ambientes de desenvolvimento pesados só para gerenciar emuladores. Ela cobre as necessidades básicas de testes e alternância entre dispositivos em um casal de pressionamentos de tecla.
Projetos relacionados