6 votes

L'application s'adapte différemment à différents moniteurs - Ubuntu 16.04

J'ai trouvé beaucoup d'articles/réponses très solides sur ce sujet :

Et bien sûr :

Cependant, j'ai encore des difficultés. Mon ordinateur portable est un Dell XPS15. Son écran est de 3840x2160. J'ai essayé différents moniteurs externes, mais pour l'instant celui que j'utilise est également Dell avec une résolution de 1920x1080.

Lorsque je connecte un moniteur externe, certains panneaux deviennent immédiatement très petits sur l'écran 3840x2160. Lorsque j'essaie d'agrandir l'écran intégré, chrome s'agrandit, mon IDE s'agrandit, mais la fenêtre d'affichage ainsi que d'autres fenêtres comme les paramètres de NVIDIA X Server restent très petits. J'ai essayé de jouer avec Mettre à l'échelle le contenu de toutes les fenêtres en Affichage mais en vain. Il est soit trop grand sur l'écran externe, soit trop petit sur l'écran intégré. J'ai aussi essayé xrandr avec scale param mais il 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 veux que plusieurs fenêtres de la même application (disons Chrome ou Intellij Idea) soient ouvertes sur des écrans différents et qu'elles s'adaptent indépendamment les unes des autres.

EDITAR

Je ne cherche pas Échelle pour les menus et la barre de titre J'aime la forme des barres. Je veux que le contenu de Windows soit mis à l'échelle de manière indépendante. Affiche L'interface utilisateur m'oblige à adapter toutes les fenêtres à l'affichage de l'identifiant intégré ou à l'affichage externe. En conséquence :

  1. Mettre à l'échelle le contenu de toutes les fenêtres Affichage intégré :

    Affichage intégré - tout semble parfait ; Affichage externe - tout est énorme.

  2. Mettre à l'échelle le contenu de toutes les fenêtres Affichage externe :

    Écran intégré - très petit ; Affichage externe - tout semble parfait.

3voto

user.dz Points 45060

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 ce qu'il en est informations sur mon environnement de test , la sortie 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 bizarre et complexe à déboguer, surtout si l'on utilise des pilotes propriétaires. La plupart du temps, j'obtiens des comportements inattendus, qui peuvent être dus à un manque de connaissance de la configuration actuelle de la pile graphique de Linux.

  • J'ai écrit cette réponse avant, cela peut introduire des outils de débogage tels que xtrace
  • Évitez d'exécuter des opérations multiples/séquentielles xrandr uniquement après la réinitialisation du serveur X. La même commande peut avoir un résultat différent en fonction des commandes précédentes. J'ai remarqué qu'avec --scale (voir le cas de test de ma réponse, lié ci-dessus) --transform & --fb . Je n'ai pas encore trouvé de moyen simple de se déconnecter ou de se connecter. Il faut donc toujours se déconnecter/se connecter avant de faire un autre essai.
  • Les captures d'écran ne prennent que des images au format pixel de FB, j'ajouterai donc des photos de l'appareil photo pour montrer les résultats réels.

Méthode 1 : xrandr --output .. --scale HCoefxVCoef o --scale-from WxH

Remarque, cela fonctionne bien pour moi. --scale est un raccourci pour --transform voir méthode3

(VGA-0 à 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 la mémoire tampon :

width = max(1280,1440*2) = 2880
height = 800+900*2 = 2600

Résultats :

  • capture d'écran nvidia xrandr scale

    nvidia xrandr scale screenshot

  • nvidia xrandr scale photo

    nvidia xrandr scale photo

Méthode 2 : nvidia-settings View Port In/Out

Remarque : ne fonctionne pas bien. nvidia-settings ne modifie pas la taille de la mémoire tampon de l'image (frame-buffer) comme dans le cas de l'option xrandr commande. Il semble qu'il s'agisse d'un bogue (en quelque sorte), nvidia a son propre FB), nécessitent des recherches plus approfondies.

Essai de réplication xrandr directement à l'aide de nvidia-settings (J'ai utilisé xrandr de la méthode 1, marqué les paramètres nvidia, réinitialisé les paramètres, puis utilisé directement nvidia-settings) :

  1. gksu nvidia-settings → Configuration de l'affichage du serveur X
  2. Sélectionner le moniteur externe → avancé...
  3. Faire ViewPortIn & Panoramique double de ViewPortOut (ce qui correspond à la résolution originale)
  4. Laisser le moniteur interne inchangé, puis Appliquer

Exemple :

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.

  • capture d'écran nvidia-settings viewportin

    nvidia-settings viewportin screenshot

  • nvidia-settings viewportin photo

    nvidia-settings viewportin photo

Mise à jour : J'ai finalement réussi à trouver une solution de contournement. Ajoutez 1px à la largeur ou à la hauteur du panoramique ( Panning )

    Panning:     2881x1800 or 2880x1801

Nouveaux résultats : Je ne peux pas l'expliquer, mais l'arrière-plan est corrompu si je l'utilise ci-dessous, sinon tout semble correct.

  • nvidia-settings viewportin avec l'astuce du panning capture d'écran

    nvidia-settings viewportin with panning trick screenshot - below j'ai réduit la qualité des couleurs de l'image ci-dessus pour qu'elle soit inférieure à la limite de 2MB d'imgur nvidia-settings viewportin with panning trick screenshot - right of

  • nvidia -settings viewportin avec photo panning trick

    nvidia-settings viewportin with panning trick photo - below nvidia-settings viewportin with panning trick photo - right of

Méthode 3 : xrandr --output .. --transform "H,0,0,0,V,0,0,0,1"

Note, cela fonctionne bien pour moi, comme pour la méthode 1.

(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 la mémoire tampon :

width = 1280+1440*2 = 4160
height = max(800,900*2) = 1800

Résultats :

  • capture d'écran nvidia xrandr transform

    nvidia xrandr transform screenshot

  • nvidia xrandr transform photo

    nvidia xrandr transform photo

0voto

user9275416 Points 1

J'ai trouvé une solution simple. J'utilise Ubuntu 18.04. Voici la sortie de mon 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 ce qui se trouve sur l'écran externe soit deux fois plus petit.

--mode est la résolution souhaitée.

C'est tout

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X