web-dev-qa-db-fra.com

fakexrandr, Mirror Fake Displays - X Erreur de requête échouée: BadMatch

Je dois créer de faux écrans miroir sur un seul moniteur physique. J'ai installé fakexrandr et maintenant j'ai deux faux écrans (683x768) sur le moniteur 1366x768 (max/préféré) de mon ordinateur portable.

Quand je lance xrandr --output eDP1~1 --same-as eDP1 --verbose commande J'obtiens cette erreur:

enter image description here

*aussi xrandr --fb 683x768 imprime la même erreur.

Phillip Berndt (propriétaire/créateur de fakexrandr ) a déclaré: "Il appartient au pilote graphique d'appliquer réellement tous les paramètres." dans ce problème . Mais ce n'était pas une réponse satisfaisante pour moi.

Pour retrouver le problème, j'ai enregistré la sortie de xrandr --verbose sur une configuration à deux moniteurs physiques. Vous pouvez suivre les commits dans ce dépôt pour voir le comportement de la sortie de xrandr --verbose.

  • Après avoir fait cela, j'ai réalisé xrandr --output eDP1~1 --same-as eDP1 la commande essaie d'affecter current 683x768 à Screen 0:. Mais le pilote graphique ou le moniteur physique de mon ordinateur portable n'a pas de 683x768 option de sortie/support. Cela pourrait peut-être être le problème (je ne suis pas sûr de l'exactitude de ce paragraphe, peut-être qu'il pourrait être complètement faux).

Dans l'ensemble: quelle est la raison réelle de cette erreur dans la capture d'écran et la solution à ce problème?

1
mertyildiran

RandR est une extension du serveur X11 qui est utilisée pour communiquer la configuration des sorties entre les clients du serveur (= applications) et le pilote graphique. La plupart des applications ne parlent pas réellement le protocole elles-mêmes, mais utilisent à la place une bibliothèque appelée libXrandR. FakeXRandR remplace cette bibliothèque par une autre qui demande toujours la configuration au pilote graphique, mais tente ensuite avec le résultat de tromper les applications en leur faisant croire qu'il y avait une configuration entièrement différente de la réalité. Étant donné que cela conduit nécessairement à des erreurs si l'on essaie de modifier l'une des fausses sorties, il essaie d'atténuer les pires problèmes en remplaçant toutes les demandes de configuration sur les fausses sorties par des demandes de changement par rapport à la sortie physique d'origine. Mais ceux-ci sont, bien sûr, toujours voués à l'échec si vous essayez d'appliquer une résolution qui n'existe que sur les fausses sorties.

Une bonne analogie pourrait être la situation lorsque vous avez une voiture assez ancienne capable de rouler à 50 km/h. Vous voulez maintenant conduire dans une rue qui vous oblige à pouvoir rouler à 100 km/h. La solution que FakeXRandR recherche est de remplacer les chiffres sur le tachymètre de telle sorte que l'aiguille affiche désormais 180 km/h lorsque vous conduisez réellement 50. Si vous êtes arrêté dans un contrôle de la circulation, vous pouvez dire "Voir officier, mon compteur de vitesse dit que je peux aller 180, donc je vais bien ", et il acceptera probablement cela. Mais vous ne pouvez toujours pas conduire plus vite, car pour ce faire, vous avez dû remplacer le moteur, pas certains numéros imprimés sur votre tableau de bord.

tl; dr: FakeXRandR n'est pas le bon outil pour votre tâche.

Si vous avez vraiment besoin de le faire au niveau RandR, vous devrez patcher votre pilote graphique, à la fois dans le code X11 et dans le code du noyau. J'ai écrit quelques hits sur où chercher dans un autre rapport de bug pour FakeXRandr . Une solution plus simple, si tout ce que vous voulez est d'avoir la moitié droite de votre miroir d'écran à gauche, serait d'utiliser un gestionnaire de fenêtres de composition avancé comme Compiz . Les gestionnaires de composition ajoutent une couche de redirection entre les fenêtres d'application et ce que vous voyez réellement. Cela leur permet, dans ce cas, de dessiner chaque fenêtre deux fois, d'abord sur le côté gauche de la sortie, puis sur le côté droit; qui clonerait efficacement votre sortie. Soit il existe déjà un plugin disponible pour cela (installez tous les packages compiz, en particulier compizconfig-settings-manager, ccsm, et recherchez ce dont vous avez besoin), ou il devrait au moins être possible de écrivez celui qui fait ce que vous voulez sans trop d'effort.

1
Phillip