Por que programas gráficos precisam de uma janela para serem atribuídos?

1

Minha pergunta é melhor explicada como cenário. Imagine que você tenha sua área de trabalho executando alguma forma de Linux (estou executando o arco). Agora vamos adicionar também que você tem um servidor VNC em execução na sua máquina, oferecendo uma área de trabalho virtual.

Eu abro o Firefox na minha área de trabalho e faço login no meu vnc para trabalhar em algo. Se eu tiver que procurar no Google alguma coisa, eu vou abrir o Firefox e receber o erro que uma sessão já está rodando, então agora eu tenho que fechar a sessão de execução anterior do Firefox e depois abrir novamente no meu vnc. Se eu esquecer que está rodando no meu vnc, eu tenho que fazer a mesma coisa para abri-lo na minha área de trabalho.

Estou ciente de que existem maneiras de corrigir esse problema específico, mas é apenas um exemplo. Por que (neste exemplo) o Firefox precisa ser atribuído a apenas 1 janela?

Por que o Firefox não pode ser criado e não ser atribuído a nenhuma janela específica, quando eu o quero em uma determinada área de trabalho, ele é carregado apenas em vez de ter que fechar e reiniciá-lo ou iniciar outra instância? Suponho que uma maneira melhor de expressar isso é: por que os processos gráficos não são executados em seu próprio servidor e, em seguida, são entregues / movidos para qualquer área de trabalho solicitante?

    
por T-he-game 31.07.2017 / 20:35

1 resposta

1

Programas que são capazes de se conectar a mais de um servidor X11 por vez são muito, muito raros. Principalmente, eles são aplicativos especializados que visam espionar uma sessão do X11 e exibir os resultados do outro, ou coisas assim. Aplicações gerais praticamente nunca suportam isso. Não tenho certeza, mas acho que muitas das bibliotecas do cliente X11 contêm variáveis globais e outros vários bits relacionados à suposição de que sempre haverá apenas uma conexão X11 em cada processo.

Isso geralmente não é um problema, porque se você quiser que um aplicativo seja exibido em duas exibições diferentes, basta executar duas cópias dele. O problema é que o Firefox não suporta ter duas cópias de si mesmo executadas ao mesmo tempo na mesma conta de usuário (independentemente de estarem ou não no mesmo monitor).

    
por 31.07.2017 / 23:43