A mudança para o Wayland corrigirá a impossibilidade de colar de janelas fechadas?

A mudança para o Wayland corrigirá a impossibilidade de colar de janelas fechadas?

Eu tenho recentementeleia sobre como o Xorg é o culpadopara obug infameem que um usuário não pode copiar e colar de uma janela depois de fechá-la. E também sei da eventual mudança planeada paraWayland como substituto do X.

Se esse bug for resultado de X, e X for substituído por Wayland, então é possível que uma correção chegue naquele momento? Estou curioso para saber se isso é tecnicamente possível e se está atualmente nos planos para isso.

Responder1

Bem, eu não acho que seja um bug em si, é antes um recurso que tem algumas consequências indesejadas :) Além disso, meu entendimento é que outros "gerenciadores de área de transferência", ou seja, emjanelaseMac OS X, funcionam de maneira muito semelhante - quando a operação de cópia é executada, o aplicativo apenas notifica o gerenciador da área de transferência - "ei, tenho algo" sem passar os dados reais (embora nos sistemas operacionais mencionados acima um aplicativopodearmazenar dados fisicamente na área de transferência - o XWindow deixa isso para um "gerenciador de área de transferência", que é um aplicativo separado).

A razão para isso ficará clara se você considerar que os dados copiados geralmente precisam ser convertidos de um formato para outro antes de serem colados. Exemplo: você está copiando um quadro de texto de um programa de publicação e colando-o no mesmo programa - o resultado preserva o tamanho do quadro de texto, bordas, transformações etc. Depois você cola a mesma coisa em um processador de texto - o resultado é algum texto com formatação rica, mas obviamente as propriedades do quadro de texto são perdidas porque o processador de texto não sabe nada sobre isso. Em seguida, você cola a mesma coisa em um editor de texto – o resultado é apenas texto simples, sem qualquer formatação.

Agora, como isso funciona? Como o formato de dados proprietário do programa de publicação é convertido em algo que o processador de texto entende ou apenas em texto simples? Obviamente, a conversão não pode ser feita pelo servidor X porque ele nada sabe sobre todos os formatos de dados possíveis, também, orecebendoo aplicativo não pode fazer a conversão pelo mesmo motivo.

Meu entendimento do processo é que quando algo é copiado, o aplicativo notifica o gerenciador da área de transferência sobre os formatos em que pode fornecer os dados: "ei, tenho algo que posso converter para meu formato proprietário, rich text ou texto simples".

Outro aplicativo verifica se há algo na área de transferência em um formato que ele entende:

if (clipboad.contains_data_in_formats("image", "rich text", "plain text")) {
    enable_Paste_menu_item();
}

Então, quando a ação Colar é selecionada, o resultado final é que ofonteo aplicativo é solicitado a fornecer os dados no formato exigido.

Quando o aplicativo está saindo,o padrãodiz que pode salvar os dados no gerenciador da área de transferência:

If a client needs to exit while owning the CLIPBOARD selection, 
it should request the clipboard manager to take over the ownership 
of the clipboard, using the SAVE_TARGETS mechanism. If there is no 
clipboard manager, or if the SAVE_TARGETS conversion fails, the 
application should simply exit.

Então, pelo que entendi, é responsabilidade do aplicativo salvar os dados. Como tal, é provavelmente improvável que Wayland melhore alguma coisa neste aspecto :)

informação relacionada