O cava roda normalmente em qualquer terminal — mas dentro do WezTerm instalado via Flatpak ele morre com:
Segmentation fault (core dumped)
Se você chegou aqui com esse problema, a solução rápida está logo abaixo. O diagnóstico detalhado vem depois, para quem quiser entender o porquê.
⚡ TL;DR — Solução em dois comandos
flatpak update org.wezfurlong.wezterm
flatpak override --user org.wezfurlong.wezterm --device=all
🔍 O que está acontecendo por baixo dos panos
Por que o WezTerm Flatpak causa o crash?
O Flatpak roda o WezTerm dentro de um sandbox que isola o processo do sistema hospedeiro. O cava tenta enumerar os dispositivos de áudio disponíveis (ALSA/PipeWire) logo na inicialização — sem acesso a esses nós de dispositivo, recebe um ponteiro inválido e segfaulta.
É por isso que outros terminais (GNOME Terminal, Kitty, etc.) não têm o problema: eles têm acesso irrestrito ao sistema. O --device=all resolve exatamente isso: libera o acesso aos dispositivos de áudio que o cava precisa para inicializar.
Como hipótese secundária (não confirmada diretamente), o sandbox também pode modificar variáveis de ambiente que o cava usa para detectar o backend de áudio.
Confirmando com GDB
Quer ver o backtrace completo? Expanda aqui.
Dentro do WezTerm, execute:
gdb cava
Quando aparecer a pergunta, aceite o debuginfod com y. Depois:
(gdb) run
Ao ocorrer a falha:
(gdb) bt
A saída deve ser parecida com esta:
Program received signal SIGSEGV, Segmentation fault.
__strncmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:283
283 VMOVU (%rdi), %ymm0
(gdb) bt
#0 __strncmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:283
#1 0x0000555555559cfe in main (argc=, argv=)
at /usr/src/debug/cava-0.10.2-7.fc44.x86_64/cava.c:297
O crash ocorre em __strncmp_avx2 — uma função de comparação de strings da glibc — chamada pelo cava na linha 297. O ponteiro passado é nulo ou aponta para memória inválida, o que indica que cava não conseguiu obter informações válidas sobre os dispositivos de áudio e segfaultou ao tentar usá-las.
✅ Solução passo a passo
1. Atualize os pacotes
sudo dnf upgrade cava # Fedora
flatpak update org.wezfurlong.wezterm
2. Conceda acesso a dispositivos
flatpak override --user org.wezfurlong.wezterm --device=all
3. Reinicie o WezTerm completamente
Feche todas as janelas e reabra. Ctrl+Shift+R não é suficiente — a permissão do Flatpak só entra em vigor com um reinício completo.
4. Teste
cava
🎉 Funcionou? Pronto. Se não, veja as alternativas abaixo.
🖱️ Alternativa: Flatseal
Prefere uma interface gráfica para gerenciar permissões do Flatpak?
flatpak install flathub com.github.tchx84.Flatseal
Abra o Flatseal → selecione WezTerm → seção Device → ative All devices → reinicie o WezTerm. O resultado é idêntico ao comando anterior.
⚠️ Se ainda não funcionar
Serviço de áudio inativo: verifique se o PipeWire está rodando:
systemctl --user status pipewire
# Se inativo:
systemctl --user start pipewire
Problema de renderização: adicione ao ~/.wezterm.lua:
config.front_end = "Software"
⚠️ Esta opção pode causar lentidão ou impedir o WezTerm de abrir em alguns sistemas. Use com cautela.
🔄 Último recurso: versão nativa do WezTerm
Se nada funcionar — ou se o tradeoff do --device=all não for aceitável — a versão nativa resolve definitivamente: sem sandbox, sem restrições de dispositivo.
A documentação oficial cobre todas as opções: AppImage, pacotes .deb/.rpm e compilação do fonte.
📌 Resumo
| Solução | Complexidade | Mantém Flatpak? |
|---|---|---|
flatpak override --device=all |
⭐ Baixa | ✅ |
| Flatseal (GUI) | ⭐ Baixa | ✅ |
| Verificar PipeWire | ⭐⭐ Média | ✅ |
front_end = "Software" |
⭐⭐ Média | ✅ |
| Instalar versão nativa | ⭐⭐ Média | ❌ |
A causa é o sandbox do Flatpak bloqueando o acesso do cava aos dispositivos de áudio na inicialização. Liberar esse acesso com --device=all resolve em quase todos os casos — e você mantém todas as vantagens do Flatpak.
📝 Tutorial baseado em experiência real no Fedora 44+ com WezTerm (Flatpak) e cava 0.10.2.
Top comments (0)