Finalmente, uma solução geral!
O problema é causado pelo suporte da Qt para telas sensíveis ao toque. O que fiz foi usar xinput
para desativar a tela de toque:
$ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ DLL06E5:01 06CB:7A13 Touchpad id=14 [slave pointer (2)]
⎜ ↳ ELAN Touchscreen id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
[... bunch of keyboard stuff]
A entrada "ELAN Touchscreen" é a que mais nos interessa. É id é 13. Então:
$ xinput --disable 13
Com a entrada da tela sensível ao toque desligada, o problema não acontece mais. Não preciso reiniciar os aplicativos do Qt que já estão em execução. O toque pode ser reativado com:
$ xinput --enable 13
Esta questão do AskUbuntu mostra outras maneiras de desativar o toque. Infelizmente, não conheço uma maneira de desativar o toque apenas para um aplicativo específico ou apenas para aplicativos Qt.
A razão pela qual o problema não aconteceu com o Xephyr (como descrito abaixo) é porque o Xephyr começa sem suporte para eventos de toque.
(Estou mantendo essas informações, pois isso pode ajudar as pessoas a diagnosticar problemas semelhantes no futuro, ou pessoas que estejam procurando uma solução mais detalhada.)
Eu corri para este problema ao tentar executar aplicativos Qt 5 em um desktop Gnome. Descobri que, se eu executar o aplicativo Qt em uma sessão Xephyr, o problema desaparece:
$ Xephyr :1 -screen 1240x800 &
$ DISPLAY=:1 path/to/executable
O Xephyr é um Xserver que pode atuar como um cliente de outro Xserver. (Eu também tentei o Xnest, e ele funciona também). Ao rodar o software em um Xserver diferente, ele é essencialmente isolado do ambiente de destino sendo executado no Xserver padrão.
Para alguns cenários de casos de uso, isso pode ser uma solução útil. Infelizmente, o isolamento significa que recortar e colar entre o aplicativo em execução no Xephyr e os outros aplicativos exigiria adicionar um pouco de cola substancial.
Eu tentei lxqt-config
para ver se eu poderia alterar algumas configurações do Qt para corrigir o problema, mas não encontrei uma configuração que corrigisse o problema.
Eu também tentei iniciar o aplicativo com -style=gtk
, mas isso só altera o estilo visual sem alterar o comportamento.