Google Antigravity IDE: como resolvi o bug do reset de tamanho da janela com Python puro
Olá pessoal!
Quem já está usando o Google Antigravity (a nova IDE agêntica da Google) provavelmente notou um incômodo diário no macOS, Windows e Linux:
Ao fechar e reabrir o programa, a janela sempre reseta para o tamanho padrão de 1400×900, esquecendo o redimensionamento feito pelo usuário.
Em telas grandes ou monitores ultrawide, ter que esticar a janela manualmente a cada inicialização quebra o fluxo de trabalho. Como o core da IDE é fechado e o repositório público não recebe PRs para a aplicação Desktop, desenvolvi uma solução em código aberto:
🔗 Repositório no GitHub: https://github.com/amiltonjr/Antigravity-IDE-WindowSize
Arquitetura da solução: Zero Dependências
O objetivo principal foi não exigir que o desenvolvedor precisasse ter node, npm, bibliotecas no pip ou pacotes globais instalados. O patch roda 100% autônomo usando apenas a biblioteca padrão do Python 3 (struct, json, hashlib, pathlib):
-
Leitura e rebuild do
.asarem memória: O script lê o cabeçalho binário do pacote Electron, extrai o arquivodist/utils.js, injeta o ouvinte de geometria e reconstrói o arquivo.asarem memória, recalculando os hashes SHA-256 de integridade. -
Proteção multi-monitor: Valida as coordenadas salvas contra as telas ativas (
screen.getAllDisplays()). Se um monitor externo for desconectado entre sessões, a janela não abre fora do campo visual; ela é reposicionada automaticamente na tela principal. -
Debounce de escrita: As alterações de tamanho e posição têm debounce de 250ms antes de gravar no
app_storage.json, evitando engasgos de I/O enquanto você arrasta a janela. -
Assinatura ad-hoc no macOS: Re-assina o binário automaticamente com
codesign --force --deep --sign -para satisfazer as checagens de integridade do Gatekeeper (ElectronAsarIntegrity). -
Reversão com 1 comando: Cria um backup de fábrica (
app.asar.orig) antes de alterar qualquer byte. Para desfazer o patch a qualquer momento, basta executar:python3 patch_antigravity_window.py --restore
O repositório já conta com scripts utilitários prontos (run.sh, run.bat e run.ps1) para facilitar a execução em cada sistema operacional.
Feedbacks e melhorias são muito bem-vindos!