Créer des écrans virtuels sur Linux (pour les érans ultra-wide)
Des écrans virtuels ?
L'objectif de la mise en place d'écrans virtuels est de pouvoir scinder votre écran physique en plusieurs écrans virtuels. Cela peut être très pratique pour les écrans ultra-wide par exemple.
Voici une illustration de la chose :
Votre système considère donc qu'il y a 3 écrans et non pas un seul.
Quels intérêts ?
Partage d'écran
Le premier intérêt qui me vient à l'esprit est lié au partage d'écran, ou à l'enregistrement de l'écran.
Avec un écran ultra-large, lorsque vous souhaitez partager votre écran, ce n'est pas du tout pratique, car le partage est beaucoup trop large (la résolution de certains ultra-large étant de 5120x1440).
Avec l'exemple dans l'illustration précédente, nous pouvons partager l'écran virtuel 2, d'une taille de 2560x1440.
Agencement de vos fenêtres
L'autre problème avec les écrans ultra-wide et les gestionnaires de fenêtres classique (Gnome, Cinammon, ...) c'est que lorsque vous souhaitez passer une fenêtre en plein écran (ou juste l'agrandir pour qu'elle s'ajuste à la taille de l'écran), et bien elle va prendre tout votre écran. Ce n'est pas très pratique.
Avec des écrans virtuels, celle-ci prendra la taille de l'écran virtuel dans lequel elle est placée !
La solution
Les limitations
Avant tout, il faut savoir que cette solution ne marche pas dans tous les cas.
Je n'ai réussi à la faire fonctionner qu'avec le gestionnaire de fenêtre
i3
.
A priori un bug avec GTK empêche le bon fonctionnement de cette solution sur beaucoup de gestionnaires de fenêtre (Gnome, Cinnamon, ...).
Par ailleurs, cette solution utilisant
xrandr
, elle ne fonctionne que sur X.org
En espérant que dans le futur les choses s'améliorent.
C'est parti
# On supprime les moniteurs virtuels que l'on a créées
# ce qui permet de relancer le script
xrandr --delmonitor DisplayPort-1-1
xrandr --delmonitor DisplayPort-1-2
xrandr --delmonitor DisplayPort-1-3
# On crée nos moniteurs virtuels. J'ai un écran ultra-large (5120x1440)
# et je souhaite créer 3 écrans virtuels (cf l'image plus en début d'article).
# Le format de la commande est le suivant
# xrandr --setmonitor DisplayPort-1-1 {x_px}/{x_mm}x{y_px}/{y_mm}+{decal_x_px}+{decal_y_px} {moniteur_physique_name}
xrandr --setmonitor DisplayPort-1-1 1180/274x1440/340+0+0 DisplayPort-1
xrandr --setmonitor DisplayPort-1-2 2560/595x1440/340+1180+0 none
xrandr --setmonitor DisplayPort-1-3 1380/321x1440/340+3740+0 none
# On force le refresh du framebuffer. Chez moi j'ai eu besoin de le faire, mais
# a priori certain n'on pas eu à le faire.
xrandr --fb 5120x1441
xrandr --fb 5120x1440
On constate que seul le premier --setmonitor porte un
{moniteur_physique_name}
, pour les
suivants, on utilise
none
.
Pour les tailles, on est obligé d'utiliser en px et en mm. Pour avoir toutes les infos sur votre
écran (dont ces tailles en mm), utiliser la commande
xrandr
Conclusion
Bien que cette solution semble pour le moment très limitée, je la garde côté au cas les choses évoluent avec GTK.
En espérant vous avoir un peu renseignés :).