Outils pour utilisateurs

Outils du site


linux:display

Différences

Ci-dessous, les différences entre deux révisions de la page.


Révision précédente
linux:display [2024/01/05 05:30] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Créer une résolution personnalisée ======
  
 +===== Avec Xrandr =====
 +
 +Xrandr est un outil qui permet de gérer qu'est ce qui sort, sur quoi, à quelle résolution et par rapport à qui. C'est un configurateur d'affichage en ligne de commande. Il se peut que votre linux ne vous propose pas de résolution adaptée à votre écran. Probablement à cause d'un problème de pilote, ou de détection (matériel non/mal reconnu ?). Il existe donc une solution : créer une résolution personnalisée. Cette solution m'a déjà servi sur une vieille TV LCD branchée sur mon pc linux de salon… :)
 +
 +Voici la méthode :
 +
 +  * On regarde quelles sont les sorties physiques disponibles, afin de travailler sur la bonne : 
 +
 +<code>
 +xrandr
 +</code>
 +
 +Vous devriez voir un **Screen 0**, la sortie sur laquelle il est branché (probablement **LVDS-1** s'il s'agit d'un pc portable), ainsi que toutes les autres disponibles (**DP-1 DP-2 HDMI-1** et **VGA-1** dans mon cas).
 +
 +  * Création d'un mode 
 +
 +<code>
 +# On trouve les infos pour la création du mode correspondant à 1920x1080 60Hz (résolution supposée être la bonne donc)
 +cvt 1920 1080 60
 + 
 +# Ensuite on copie toute la ligne sans "Modeline" et on créer le mode avec :
 +xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
 + 
 +# On ajoute notre mode à la sortie qui nous intéresse (par exemple VGA-1 si l'écran en question est branché dessus)
 +xrandr --addmode VGA-1 1920x1080_60.00
 + 
 +# On active ensuite le mode crée sur la sortie
 +xrandr --output VGA-1 --mode 1920x1080_60.00
 + 
 +# On active ensuite le mode créé sur la sortie, comme ceci s'il s'agit de votre second écran, qui est à droite du 1er qui est branché sur HDMI-1
 +xrandr --output VGA-1 --mode 1920x1080_60.00 --right-of HDMI-1
 +</code>
 +
 +==== Rendre la modification définitive ====
 +
 +Cette technique a pour inconvénient de ne pas être persistente. Une fois redémarré, c'est comme avant. L'astuce pour la rendre définitive consiste à tout betement créer un script qui sera lancé au démarrage.
 +
 +  * Télécharger le script suivant, et le placer dans ~/.config [[:doku|display.sh]] #!/bin/bash
 +xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
 +xrandr --addmode VGA-1 1920x1080_60.00
 +# Pour 1 seul écran
 +xrandr --output VGA-1 --mode 1920x1080_60.00
 +# Pour le 2 eme écran (commenter la précédente ligne, et décommenter celle ci dessous)
 +#xrandr --output VGA-1 --mode 1920x1080_60.00 --right-of HDMI-1 Attention : le script ci dessus contient tout bêtement les lignes de l'article précédent, prenez soin de les adapter en fonction de votre configuration. 
 +  * Ouvrir un terminal et saisir cette commande pour rendre le script exécutable chmod +x ~/.config/display.sh 
 +  * Trouver dans vos paramètres systèmes “Démarrage” ou “Application au démarrage” ou “Session et démarrage” .. le nom dépend de votre environement de bureau 
 +  * Y ajouter votre script au démarrage de la session, comme on pourrait le faire avec n'importe quel autre application 
 +  * Enjoy ;) 
 +
 +====== Utiliser l'écran d'une autre machine comme un second écran, c'est possible :) ======
 +
 +Sur linux, on a la possibilité d'utiliser l'écran d'une autre machine (ou plusieurs autres) en tant que second écran d'une autre. Sur la machine principale, normalement déjà doté de l'outil **xrandr**, on a juste besoin d'avoir un serveur vnc d'installé.
 +
 +===== Machine principale =====
 +
 +==== Installation du serveur VNC ====
 +
 +=== Archlinux / Manjaro ===
 +
 +<code>
 +yay -Sy x11vnc
 +sudo pacman -Sy x11vnc # si vous n'avez pas d'AUR Helper
 +</code>
 +
 +=== Debian / Ubuntu / Mint ===
 +
 +<code>
 +sudo apt install x11vnc
 +</code>
 +
 +==== Création du 2nd écran virtuel ====
 +
 +On admet que notre écran principal, et celui qu'on souhaite utiliser comme second écran, ont une résolution de 1920×1080.
 +
 +  * On regarde quelles sont les sorties physiques disponibles 
 +
 +<code>
 +xrandr
 +</code>
 +
 +Vous devriez voir un **Screen 0**, la sortie sur laquelle il est branché (probablement **LVDS-1** s'il s'agit d'un pc portable), ainsi que toutes les autres disponibles (**DP-1 DP-2 HDMI-1** et **VGA-1** dans mon cas).
 +
 +  * Création d'un mode 
 +
 +<code>
 +# On trouve les infos pour la création du mode correspondant à 1920x1080 60Hz
 +cvt 1920 1080 60
 + 
 +# Ensuite on copie toute la ligne sans "Modeline" et on créer le mode avec :
 +xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
 + 
 +# On ajoute notre mode à la sortie qui nous intéresse (VGA-1 dans mon cas, car non utilisée)
 +xrandr --addmode VGA-1 1920x1080_60.00
 + 
 +# On active ensuite le mode créé sur la sortie, en précisant la position par rapport à l'écran principal
 +xrandr --output VGA-1 --mode 1920x1080_60.00 --right-of LVDS-1
 +</code>
 +
 +==== Partage du 2nd écran avec VNC ====
 +
 +  * La commande est assez simple, la syntaxe est la suivante 
 +
 +<code>
 +x11vnc -clip ${X}x${Y}+${X_offset}+${Y_offset}
 +</code>
 +
 +  * Si le 2nd écran est positionné à gauche (**--left-of**) l'offset sera **+0+0**, s'il est positionné à droite (avec **--right-of**) l'offset sera **+1920+0**, c'est à dire qu'on se décale d'un écran entier sur l'axe X, donc sur la droite. Donc, dans mon cas l'écran est à droite, la commande sera 
 +
 +<code>
 +x11vnc -clip 1920x1080+1920+0
 +</code>
 +
 +==== IP ====
 +
 +Le client VNC de la seconde machine se connectera sur la machine principale grâce à son IP, il faut alors la récupérer.
 +
 +<code>
 +ip -4 a
 +</code>
 +
 +===== Machine secondaire =====
 +
 +La seconde machine peut être n'importe quel type de machine. Une tablette, un smartphone, un PC. Pourvu qu'elle puisse exécuter un client VNC.
 +
 +A partir de là, il suffit de se connecter à l'IP de la machine principale depuis la seconde.
 +
 +==== Android ====
 +
 +Je conseille l'utilisation de l'application **androidVNC** qui est disponible sur [[https://f-droid.org/packages/android.androidVNC/|F-Droid]].
 +
 +Saisir l'ip dans “Adresse”, laisser le port par défaut (5900), choisir un format de couleur aussi (si le réseau est bon on peut utiliser le 24-bit, sinon baisser un peu) et appuyer sur Connecter.
 +
 +==== Windows ====
 +
 +Je conseille l'utilisation du client UltraVNC (libre et gratuit) disponible [[http://www.uvnc.com/downloads/ultravnc.html|ici]]. On peut également utiliser le client non-libre et propriétaire, mais gratuit aussi, disponible [[https://www.realvnc.com/fr/connect/download/viewer/|ici]].
 +
 +==== Linux ====
 +
 +Je conseille l'utilisation de **tigervnc**. La commande ci-dessous se connecte directement en plein écran sur l'écran partagé. On y voit que du feu :p
 +
 +<code>
 +vncviewer -encodings "tight copyrect" -FullScreen=1 -QualityLevel=9 192.168.5.38
 +</code>
 +
 +Il y a aussi Remmina qui dispose d'une interface graphique complète.
 +
 +==== MacOS ====
 +
 +[à compléter]
 +
 +===== Résolution de problèmes =====
 +
 +==== Configure crtc 0 failed ====
 +
 +Je n'ai pas réussi à démêler ce problème. J'ai trouvé des infos [[https://askubuntu.com/questions/136139/xrandr-configure-crtc-0-failed-when-trying-to-change-resolution-on-external-m|ici]], mais sans succès sur ma Manjaro live de test…
 +
 +===== Source =====
 +
 +[[https://bbs.archlinux.org/viewtopic.php?id=191555|BBS Archlinux]]