Como eu executo um servidor X em um container no topo do Wayland sem a sobrecarga do Xwayland?

1

Existe uma questão semelhante aqui mas o cenário e os objetivos são diferentes. O autor se preocupa com "apenas fazer funcionar", enquanto eu também me preocupo com desempenho e eficiência.

O que estou tentando fazer é ter uma GUI principal e, além disso, aplicativos / programas na forma de contêineres (como o Docker). Pense em algo como QubesOS .

A GUI principal é Wayland e controlaria a barra de tarefas, o menu iniciar, as bordas das janelas, mas nada mais (basicamente um gerenciador de janelas simples como o IceWM). Além disso, eu rodava contêineres com um kernel do Linux + servidor X + código de aplicativo simplificados. Então, aplicações isoladas de X no topo do sistema principal de Wayland.

A questão aqui é que eu não entendo muito bem como executar esses contêineres sem também adicionar a sobrecarga da Xwayland, como a resposta mencionada acima explica.

Então, um servidor X pode ser executado diretamente no contêiner isolado, em vez de confiar no Xwayland?

    
por gw0 27.03.2018 / 21:48

2 respostas

1

My issue is I'm trying to have a main Wayland based gui/desktop while X apps are isolated in containers. Isn't there a way to run those X apps inside containers without the Xwayland overhead?

O comentário citado é confuso. Por favor, estude cuidadosamente a resposta que a segue imediatamente e elimina essa confusão.

You need an X server in any case.

Se você quer rodar um aplicativo X, e o que você tem é um servidor de exibição Wayland, você precisa de uma Xwayland para traduzir.

Se você quiser evitar a sobrecarga e aproveitar ao máximo o desempenho do Wayland, precisará de contêineres que suportem contêineres Wayland nativos. Como executar aplicativos Flatpak sob o Wayland. (AFAIK se você executar aplicativos Flatpak em um desktop X , ele simplesmente desiste e permite acesso X totalmente inseguro).

    
por 27.03.2018 / 22:34
0

X é transparente na rede (pelo menos em princípio), portanto você pode executar o servidor X em qualquer lugar que desejar, em vez de em todos os contêineres que contêm um aplicativo. Não importa se você executa o servidor X em um contêiner adicional (conectado aos contêineres de aplicativos via rede), no seu host ou até mesmo em um computador separado que você usa como terminal X.

Tudo o que você precisa fazer é configurar o servidor X para aceitar clientes em rede e definir DISPLAY em todos os contêineres com aplicativos para o endereço correto. Você também pode ter que configurar credenciais corrigidas em .Xauthory etc.

No entanto, , aplicativos GUI mais modernos são usados para ter hardware gráfico acelerado na mesma máquina em que estão sendo executados, e geralmente fazem uso extensivo dele para efeitos bonitos. Isso pode não funcionar na rede, ou pode funcionar, mas pode não ser rápido ou responsivo o suficiente.

Nesse caso, eu pensaria em configurar algum tipo de solução VNC com VirtualGL .

    
por 28.03.2018 / 11:32