Para manter a mesma aparência em qualquer formato de instalação, decidimos incluir o GTK
O motivo pelo qual o mesmo app parece um pouco diferente em cada distribuição geralmente não é o app, mas a versão do toolkit instalada no sistema. A partir da beta.2, os quatro formatos de instalação passam a levar consigo as mesmas bibliotecas.

No Linux, até a mesma compilação de um app pode parecer diferente em cada distribuição. O formato dos controles muda, o espaçamento das caixas de diálogo fica desalinhado e, às vezes, a janela nem sequer abre. Isso acontece porque cada sistema tem um toolkit diferente instalado.
O mote também vinha mantendo duas compilações. O .deb usava o GTK do sistema, enquanto AppImage, tarball e Flatpak incluíam diretamente as bibliotecas necessárias.
A partir da beta.2, unificamos tudo em uma única compilação.
A forma de instalação muda, mas o app é o mesmo
Agora, o .deb também inclui o GTK 4.22 e a libadwaita 1.9 em /opt/mote. Independentemente das bibliotecas instaladas no sistema, ele pode ser instalado no Ubuntu 22.04 e no Debian 12 com apt install. A aparência e o funcionamento também são iguais aos do AppImage, do tarball e do Flatpak.
Alinhamos as bibliotecas incluídas ao runtime do GNOME usado pelo Flatpak. São GLib 2.88, Pango 1.56, HarfBuzz 11, cairo 1.18 e fontconfig 2.16. Para que o app também possa ser executado em distribuições antigas, fazemos a compilação diretamente em um contêiner com glibc 2.35.
O objetivo é reduzir o número de casos que precisam ser verificados. Quando usamos o GTK do sistema, o toolkit muda conforme a versão do Ubuntu. A 24.04 usa a 4.14, a 24.10 usa a 4.16 e a 25.04 usa a 4.18. Sempre que alteramos uma única linha de estilo, precisamos verificar todas essas combinações. Agora, basta verificar cada forma de instalação.
Também consideramos eliminar o .deb. Mas, no Ubuntu Desktop, o apt é o caminho de instalação mais familiar. O AppImage leva cerca de 140ms a mais para iniciar e requer FUSE. O tarball não tem atualização automática, e o Flatpak precisa de exceções no sandbox e de um runtime de aproximadamente 1GB.
Por isso, em vez de eliminar o .deb, mudamos o que há dentro dele.
Compramos consistência com 14MB
Há um custo. O tamanho do .deb aumentou de 4MB para 34MB. Ao abrir o mesmo documento, a memória PSS também aumentou de 115MB para 129MB. Isso acontece porque as bibliotecas incluídas no app não podem ser compartilhadas com outros apps GTK.
O desempenho foi mantido. O tempo p95 entre a entrada pelo teclado e a exibição na tela caiu de 4.82ms para 4.07ms. A mediana do tempo até a primeira tela aparecer também ficou um pouco mais rápida, passando de 306ms para 303ms. Quando o app fica apenas aberto, ele continua sem renderizar quadros, como antes.
Em troca de usar 14MB a mais de memória, passamos a ter o mesmo app em qualquer distribuição.
A atualização do toolkit incluído é um trabalho periódico feito aproximadamente uma vez por ano. Quando o runtime do GNOME no Flatpak é atualizado, também atualizamos as versões incluídas. Nesse momento, as oito linhas do laboratório se tornam o critério de aprovação dessa atualização.
O gosto fica por conta do mote; a acessibilidade, por conta do usuário
Também organizamos as configurações de marca. A cor de destaque e a fonte da interface usam os padrões do mote e são aplicadas da mesma maneira aos widgets da libadwaita. Se quiser seguir as configurações do ambiente de desktop, basta desativar os dois controles em Configurações → Aparência.
Já as configurações de acessibilidade sempre respeitam a escolha do usuário. O app não substitui a escala do texto nem as configurações de HiDPI. Quem ativou letras grandes também verá letras grandes no mote. E o modo escuro pode ser escolhido diretamente entre sistema, claro e escuro.
Verificamos a digitação em coreano em oito ambientes
Quando o toolkit muda, o primeiro item a examinar é o método de entrada. Verificamos a digitação em coreano em oito ambientes que combinavam formas de instalação com ibus e fcitx5, X11 e Wayland, Ubuntu 22.04 e 24.04. Todos passaram.
Também corrigimos os testes para que não dependam de recursos de verificação voltados ao desenvolvimento. Agora, instalamos os arquivos que realmente distribuímos e depois verificamos se a composição de caracteres coreanos funciona corretamente.

A maneira mais segura de criar o mesmo app em qualquer lugar é começar reduzindo as condições que podem variar.