fakexrandr, Espelho Falso Exibe - X Erro de pedido falhado: BadMatch

1

Eu preciso criar telas falsas de espelho em um monitor físico. Eu instalei o fakexrandr e agora eu tenho dois monitores falsos (683x768) no monitor 1366x768 (max / preferido) do meu laptop.

Quando executo o comando xrandr --output eDP1~1 --same-as eDP1 --verbose , recebo este erro:

* também xrandr --fb 683x768 está imprimindo o mesmo erro.

Phillip Berndt (proprietário / criador de fakexrandr ) disse "Cabe ao driver de gráficos para realmente aplicar as configurações." em este problema . Mas não foi uma resposta satisfatória para mim.

Para rastrear o problema, gravei a saída de xrandr --verbose em uma configuração de dois monitores físicos. Você pode seguir os commits em este repositório para ver o comportamento da saída de xrandr --verbose .

  • Depois de fazer isso, percebi que o comando xrandr --output eDP1~1 --same-as eDP1 está tentando atribuir current 683x768 a Screen 0: . Mas o driver gráfico ou o monitor físico no meu laptop não tem 683x768 opção de saída / suporte. Talvez este possa ser o problema (não tenho certeza da precisão deste parágrafo, talvez possa ser completamente errado).

Em resumo: qual é o motivo real desse erro na captura de tela e a solução alternativa para esse problema?

    
por mertyildiran 08.04.2015 / 20:33

1 resposta

1

RandR é uma extensão do servidor X11 usado para comunicar a configuração das saídas entre os clientes do servidor (= aplicativos) e o driver gráfico. A maioria dos aplicativos não fala o protocolo, mas usa uma biblioteca chamada libXrandR . O FakeXRandR substitui essa biblioteca por uma que ainda pede ao driver de gráficos pela configuração, mas depois se atreve ao resultado para enganar os aplicativos, fazendo-os acreditar que havia uma configuração inteiramente diferente do que realmente existe. Como isso necessariamente leva a erros, se alguém tentar alterar uma das saídas falsas, ele tentará atenuar os piores problemas, substituindo quaisquer solicitações de configuração em saídas falsas com solicitações de alteração contra a saída física original. Mas esses, é claro, ainda estão fadados ao fracasso se você tentar aplicar uma resolução que só existe nas saídas falsas.

Uma boa analogia pode ser a situação em que você tem um carro bastante antigo capaz de dirigir 50 km / h. Agora você quer dirigir em uma rua que exige que você consiga dirigir 100 km / h. A solução que o FakeXRandR persegue é substituir os números no tacômetro, de modo que a agulha mostre 180 kph quando você estiver dirigindo 50. Se você estiver parado em um controle de tráfego, diga "Ver oficial, meu velocímetro diz que posso ir 180, então estou bem ", e ele provavelmente aceitará isso. Mas, na verdade, você ainda não consegue dirigir mais rápido, porque para isso você precisou substituir o mecanismo, e não alguns números impressos no seu painel.

tl; dr: O FakeXRandR é a ferramenta errada para sua tarefa.

Se você realmente precisa fazer isso em um nível RandR, você terá que corrigir seu driver gráfico, tanto no X11 quanto no código do kernel. Eu escrevi alguns hits sobre onde procurar em outro relatório de bug para o FakeXRandr . Uma solução mais simples, se tudo que você quer é ter a metade direita da sua tela espelhada à esquerda, seria usar um gerenciador de janelas de composição avançado como Compiz . Os gerentes de composição adicionam uma camada de redirecionamento entre as janelas do aplicativo e o que você realmente vê. Isso permite que, nesse caso, desenhe cada janela duas vezes, primeiro no lado esquerdo da saída e depois no lado direito; o que efetivamente clonaria sua saída. Já existe um plugin disponível para isso (instale todos os pacotes de compiz, especialmente compizconfig-settings-manager , ccsm, e procure pelo que você precisa), ou pelo menos deve ser possível escrever um que faz o que você quer com pouco esforço.

    
por Phillip 12.04.2015 / 11:01