J'ai trouvé beaucoup d'articles/réponses très solides sur ce sujet:
Et bien sur:
Cependant, je me bats toujours. Mon ordinateur portable est Dell XPS15. Son affichage est 3840x2160. J'ai essayé différents moniteurs externes, mais celui que j'utilise actuellement est également celui de Dell avec une résolution de 1920x1080.
Lorsque je connecte un moniteur externe, certains des panneaux deviennent immédiatement très petits sur l’écran 3840x2160. Lorsque j'essaie de redimensionner l'affichage intégré, chrome échelles, mon IDE échelles, mais affiche une fenêtre avec d'autres fenêtres telles que les paramètres de NVIDIA X Server restent très petits. J'ai essayé de jouer avec Adapte tout le contenu de la fenêtre à celui de dans Affichage mais en vain. Il est trop grand sur l’écran externe ou trop petit sur l’intégration. J'ai aussi essayé xrandr avec scale param mais ça me donne:
xrandr --output HDMI-1 --scale 2x2
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 26 (RRSetCrtcTransform)
Value in failed request: 0x40
Serial number of failed request: 38
Current serial number in output stream: 39
Idéalement, je souhaite que plusieurs fenêtres de la même application (par exemple, Chrome ou Intellij Idea soient ouvertes sur différents écrans et évoluent indépendamment l'une de l'autre).
Je ne cherche pas Échelle pour les menus et la barre de titre , j'aime la façon dont les barres sont. Je veux que le contenu de Windows soit mis à l'échelle indépendamment. Affiche L’UI me force à adapter toutes les fenêtres à l’affichage Built-id ou à l’affichage externe. Par conséquent:
Adapte tout le contenu de la fenêtre à la correspondance .
Affichage intégré - tout a l'air parfait; Affichage externe - tout est énorme.
Adapte tout le contenu de la fenêtre à Affichage externe:
Affichage intégré - très petit; Affichage externe - tout a l'air parfait.
J'ai le pilote nvidia 340.98
avec GT218M [NVS 3100M], Xubuntu 16.04, tous les résultats ci-dessous proviennent de cet environnement si je ne mentionne pas le contraire. Voici informations sur mon environnement de test , le résultat de:
Sudo apt-get install pastebinit; \
Sudo sh -c "lsb_release -sd; \
dmidecode -s system-product-name; echo ==; \
lshw -c display; echo ==; \
xrandr --verbose; echo ==; \
cat /etx/X11/xorg.conf" \
| tee ~/Desktop/ubuntu-graphic-info.txt \
| pastebinit
Pile étrange et complexe à déboguer spécialement à l'aide de pilotes propriétaires. La plupart du temps, j'obtiens des comportements inattendus, dus peut-être au manque de connaissances sur la configuration actuelle de la pile graphique Linux.
xtrace
name__xrandr
name__, uniquement après la réinitialisation du serveur X. La même commande peut avoir un résultat différent selon les commandes précédentes. J'ai remarqué cela avec --scale
(voir le scénario de test de ma réponse, lien ci-dessus) --transform
& --fb
. Je ne connais toujours pas de solution de facilité uniquement par la déconnexion/connexion. Donc, déconnectez-vous/connectez-vous toujours avant de faire un autre essai.xrandr --output .. --scale HCoefxVCoef
ou --scale-from WxH
Remarque, fonctionne bien pour moi. --scale
est un raccourci pour --transform
, voir method3
(VGA-0 en dessous de DP-3)
xrandr \
--output DP-3 --mode 1280x800 --scale 1x1 --pos 0x0 --fb 2880x2600 \
--output VGA-0 --mode 1440x900 --scale 2x2 --pos 0x800
ou:
xrandr \
--output DP-3 --mode 1280x800 --pos 0x0 --fb 2880x2600 \
--output VGA-0 --mode 1440x900 --scale-from 2880x1800 --pos 0x800
Calcul de la taille de FrameBuffer:
width = max(1280,1440*2) = 2880
height = 800+900*2 = 2600
Résultats:
nvidia-settings
View In/Out du port Remarque, ne fonctionne pas bien. nvidia-settings
ne modifie pas le frame-buffer à la taille requise comme dans la commande xrandr
name__. Il semble qu'un bogue (une sorte de, nvidia
a son propre FB), nécessite davantage de recherche.
J'ai essayé de répliquer la configuration de xrandr
directement à l'aide de nvidia-settings
(j'ai utilisé xrandr de method1, marqué le paramètre nvidia, réinitialisé les paramètres, puis utilisé directement nvidia-settings):
gksu nvidia-settings
→ Configuration de l'affichage du serveur XExemple:
Paramètres nvidia du moniteur interne
Position: +0+0
ViewPortIn: 1280x800
ViewPortOut: 1280x800+0+0
Panning: 1280x800
Paramètres nvidia du moniteur externe
Position: +1280+0 (rightof) or +0+800 (below)
ViewPortIn: 2880x1800
ViewPortOut: 1440x900+0+0
Panning: 2880x1800
Résultats: Remarquez le pointeur de la souris, il peut atteindre tous les bords du deuxième moniteur même s'il ne dessine que le quart supérieur gauche.
Mise à jour: Eh bien, je pourrais enfin avoir un truc pour contourner le problème. Ajouter 1px à la largeur ou à la hauteur du panoramique (Panning
name__)
Panning: 2881x1800 or 2880x1801
Nouveaux résultats: je ne peux pas expliquer cela, seul l'arrière-plan est corrompu si j'utilise ci-dessous, sinon tout semble correct.
nvidia-settings viewportin avec panoramique capture d'écran truc
abaissé la qualité de la couleur de l'image ci-dessus pour faire moins de 2 Mo limite
nvidia -settings viewportin avec panoramique astuce photo
xrandr --output .. --transform "H,0,0,0,V,0,0,0,1"
Remarque, fonctionne bien pour moi, comme pour method1
(VGA-0 à droite de DP-3)
xrandr \
--output DP-3 -primary --mode 1280x800 --pos 0x0 --transform "1,0,0,0,1,0,0,0,1" --fb 4160x1800 \
--output VGA-0 --mode 1440x900 --transform "2,0,0,0,2,0,0,0,1" --right-of DP-3
Calcul de la taille de FrameBuffer:
width = 1280+1440*2 = 4160
height = max(800,900*2) = 1800
Résultats:
J'ai trouvé une solution simple. Je suis sous Ubuntu 18.04. Ceci est ma sortie xrandr:
light@light:~$ xrandr
Screen 0: minimum 8 x 8, current 5760 x 2160, maximum 32767 x 32767
HDMI-0 connected 1920x1080+3840+92 (normal left inverted right x axis y axis) 476mm x 268mm
1920x1080 60.00*+ 59.94 50.00
1680x1050 59.95
1600x900 60.00
1440x900 59.89
1280x1024 60.02
1280x800 59.81
1280x720 60.00 59.94 50.00
1024x768 60.00
800x600 60.32
720x576 50.00
720x480 59.94
640x480 59.94 59.93
DP-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 382mm x 214mm
3840x2160 60.02*+ 48.02
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-1-1 disconnected (normal left inverted right x axis y axis)
HDMI-1-1 disconnected (normal left inverted right x axis y axis)
DP-1-2 disconnected (normal left inverted right x axis y axis)
HDMI-1-2 disconnected (normal left inverted right x axis y axis)
light@light:~$
J'ai simplement exécuté la commande ci-dessous et cela a fonctionné parfaitement:
light@light:~$ xrandr --output HDMI-0 --scale 2x2 --mode 1920x1080
light@light:~$
--scale 2x2
implique que tout soit deux fois plus petit sur un écran externe.
--mode
est la résolution souhaitée.
C'est tout