
Observe que esta questão é totalmente diferente da
- Como posso evitar que programas troquem de espaços de trabalho?
- Como posso bloquear um aplicativo (e todas as suas novas janelas) em um espaço de trabalho específico?
- Impedir que os aplicativos alterem o espaço de trabalho
- Como evitar a alteração da unidade do espaço de trabalho ao ativar a janela anteriormente parcialmente arrastada entre dois espaços de trabalho
Porque esta questão aqui NÃO é sobre como
- abra um programa no espaço de trabalho atual. Eu sei que.
- abra um programa em um espaço de trabalho diferente. Eu sei que.
- impedir que uma janela se mova para algum espaço de trabalho. Eu sei como lidar com isso.
- evite alternar um espaço de trabalho ao clicar em um ícone ou use o alternador de tarefas.
Esta questão também NÃO é sobre cromo. O Chromium é apenas o aplicativo mais proeminente entre muitos aplicativos que se comportam mal.
A questão é como evitar que o Wayland mude o espaço de trabalho atual quando outro aplicativo tenta mudar o foco para si mesmo (como o chromium ou outros) sem interação direta do usuário. Isso é algo como roubo de foco, o que é bastante irritante quando acontece no espaço de trabalho atual.
Se eu escolher um espaço de trabalho com Compiz, esse espaço de trabalho não deverá ser alterado até que eu escolha um diferente, independentemente do que outros aplicativos tentem fazer em segundo plano.
Existe talvez uma maneira de dizer ao Wayland para obedecer apenas a um comando de comutação de certos aplicativos como Compiz e wmctrl? Isso pode, talvez, ser alcançado com algum dbus
filtro (mesmo que eu saiba como hackear o código dos módulos do kernel Linux como CIFS ou ZFS de acordo com minhas necessidades, eu realmente não groco dbus
nem Wayland nem SystemD ainda, desculpe). LD_PRELOAD
? Algum firewall de protocolo X0 (existente)? Qualquer coisa?
Minha solução atual é executar
while sleep .01; do DISPLAY=:0 wmctrl -s 2; done
Dessa forma, se o chromium (ou um dos outros aplicativos) mudar de espaço de trabalho, o Wayland voltará imediatamente para aquele em que trabalho. No entanto, esta oscilação constante da tela por um minuto devido a essa alternância é irritante. Além disso, às vezes o foco do mouse se perde (ou algo completamente diferente acontece, como deixar cair algo na área de trabalho errada devido à condição de corrida exposta) devido à oscilação.
Observe que o cromo é o mais irritante. A maioria dos outros aplicativos apenas alterna o espaço de trabalho uma única vez. O Chromium, no entanto, aparentemente faz isso para cada janela que abre quando é iniciado. Com vários milhares de janelas abertas ao meu lado, todo o início do Chrome leva minutos (minha máquina tem RAM e CPU suficientes, portanto, isso não é um problema de troca) e, enquanto ele é inicializado, ele tenta alternar constantemente o espaço de trabalho até que esteja pronto . No entanto, a questão também é como evitar que FireFox, IDEs e outras janelas roubem o foco desta forma.
Observe que esta questão não se trata do roubo de foco em si. Trata-se apenas de roubar foco mudando a área de trabalho, porque isso é algo completamente diferente do roubo de foco normal observado.
Portanto, não quero evitar que as janelas saltem, mudem para outro espaço de trabalho ou roubem o foco do espaço de trabalho atual. Portanto, os aplicativos ainda podem arruinar o posicionamento da minha janela.
Tudo que eu quero é "bloquear" o espaço de trabalho atual de forma que nada mais possa alterá-lo até que eu opte por mudar para outro espaço de trabalho.
Algumas reflexões sobre isso:
Wayland apresenta apenas uma determinada parte (o espaço de trabalho) de uma tela muito maior (que contém todos os espaços de trabalho). Portanto, alterar o espaço de trabalho é apenas alterar a origem de onde a tela é mostrada. E as exibições são áreas relativas a esta origem. (É claro que há um pouco mais acontecendo, já que o foco de entrada também precisa ser movido.)
AFAICS deve ser fácil impedir que a origem seja movida (e, assim, evitar também a mudança do foco). É exatamente isso que quero arquivar. Talvez isso já esteja embutido no Wayland em algum lugar. Ou pode ser hackeado no código, algo como um firewall que impede a alteração da origem por aplicativos não autorizados. Isso é algo que eu poderia implementar, se conseguisse encontrar o local certo onde essa mudança de origem acontece em Wayland.
Mas antes de me aprofundar nisso (o que provavelmente levará vários dias), quero saber se existe alguma maneira melhor ou padrão de arquivar isso.
Algumas notas finais:
Preciso usar o Ubuntu e o Wayland, pois minha configuração de exibição/Hardware/pilha HWE não é suportada no X11 simples. (Não é possível controlar corretamente um dos meus monitores. Observe que muito provavelmente tenho a capacidade de encontrar esse bug e repará-lo, mas não tenho tempo para fazer isso.)
Portanto, afastar-me de Wayland não ajuda ao meu lado. É claro que eu executo o LTS, então o Ubuntu 22.04 também está configurado, então mudar o sistema operacional também não ajuda em nada.