Nvidia, xrandr et xinerama

Ça fait neuf mois que j’ai chan­gé d’ordinateur, et je m’étais pas encore posé cette ques­tion : com­ment gérer le bas­cu­le­ment d’un écran ? C’est désor­mais chose faite, et putain, ça fait chier.

Avec le pré­cé­dent et sa carte Intel, les per­for­mances gra­phiques étaient à la traîne (même sans effets par­ti­cu­liers, Com­piz ramait et des trucs comme Coun­ter-Strike ou Earth, pas des plus exi­geants pour­tant, la met­taient à genoux), et j’avais dû bri­co­ler le xorg.conf à la main pour acti­ver deux écrans. Ensuite, j’avais deux écrans sous xran­dr (en vrai “X rotate and resize”, outil basique en ligne de com­mande, per­met­tant de dépla­cer, retour­ner et retailler des écrans) dont je fai­sais ce que je vou­lais.

Avec mon ordi actuel et sa carte Nvi­dia, qui marche quand même lar­ge­ment mieux que la merde d’Intel, ça s’est beau­coup mieux pas­sé pour acti­ver le bi-écran : une fois les pilotes ins­tal­lés (ça se fait presque tout seul sous les der­nières Ubun­tu, suf­fit de lui dire “je le veux” quand il pro­pose d’épouser les pilotes pro­prié­taires), j’ai uti­li­sé l’utilitaire Nvi­dia et lui ai dit du bout de la sou­ris que l’écran du por­table était à droite de l’écran prin­ci­pal. Pour enre­gis­trer la config, faut être root, mais c’est tout et ça marche nickel.

Jusque là, tout va bien. Mais ça s’est com­pli­qué quand j’ai vou­lu consul­ter mes stats Fli­ckr (Ghusse venait de publier les siennes, je viens de pas­ser sur un compte “pro”, y’avait un moment que j’avais pas regar­dé les miennes, tout ça). Vue la hau­teur des listes, je me suis dit : “tiens, si je bas­cu­lais l’écran à la ver­ti­cale, ça serait car­ré­ment plus lisible”.

Pre­mière sur­prise : le truc de Nvi­dia ne pro­pose pas la rota­tion des écrans. Je me dis “je vais essayer avec xran­dr”, deuxième sur­prise :

franck@franck-laptop:~$ xrandr
Screen 0: minimum 3120 x 1050, current 3120 x 1050, maximum 3120 x 1050
default connected 3120x1050+0+0 (normal left inverted right) 0mm x 0mm 3120x1050 50.0*

Un seul écran, au lieu de deux, et qui ne réagit pas quand je lui dis de tour­ner.

Ren­sei­gne­ment pris, il faut acti­ver manuel­le­ment une option pour que les pilotes Nvi­dia acceptent les com­mandes xran­dr. Bon, jusqu’ici, c’est pas la mort, j’ajoute le Option “Ran­dR­Ro­ta­tion” “on” dans xorg.conf, sec­tion “Device”, et je peux faire tour­ner… l’ensemble du bureau, les deux écrans d’un bloc uni.

bi-xrandr

Solu­tion poten­tielle : sépa­rer les deux écrans — c’est-à-dire en faire deux “Dis­play” dis­tincts. Là encore, l’outil Nvi­dia pro­pose la fonc­tion adé­quate, j’ajoute la ligne pour Ran­dR­Ro­ta­tion et ça marche bien, j’ai mes deux Dis­play sépa­rés dans xran­dr et je peux n’en faire tour­ner qu’un.

Petit sou­cis en revanche : avec deux Dis­play dis­tincts, les deux écrans sont trai­tés comme… deux écrans. Ils ont cha­cun leur barre de lan­ce­ment, cha­cun leur cube Com­piz, lancent cha­cun leurs appli­ca­tions de leur côté, et impos­sible de faire une fenêtre d’un écran à l’autre, ce qui com­plique un peu les choses dans mon uti­li­sa­tion quo­ti­dienne (typi­que­ment, j’ai la fenêtre image de GIMP sur le moni­teur prin­ci­pal et les barres d’outils sur celui du por­table, par exemple).

La solu­tion est cen­sée s’appeller Xine­ra­ma, une abs­trac­tion pour “assem­bler” deux Dis­play, qui est par défaut désac­ti­vée. Go, je l’active… Boum. Plus de xran­dr. Appa­rem­ment, on ne peut pas acti­ver en même temps Xine­ra­ma et xran­dr sur les pilotes Nvi­dia. Mieux : plus de Com­piz, retour au ges­tion­naire de fenêtres de Gnome qui est une sombre bouse.

Donc là, je suis reve­nu à la solu­tion ori­gi­nelle : un seul Dis­play pour les deux écrans, avec le truc que Nvi­dia appelle Twin­view, et je ne peux faire bas­cu­ler que l’ensemble, ce qui n’est pas très gênant pour une uti­li­sa­tion très ponc­tuelle mais serait inuti­li­sable au quo­ti­dien.

Je pense pour ma part (mais ça n’engage que moi) que dans la mesure où l’outil de réglages Nvi­dia prend en charge l’affichage en bi-écran, par-des­sus les outils de base comme xran­dr, ce serait la moindre des choses qu’il per­mette de faire ce que xran­dr per­met.

Autre­ment dit, que Nvi­dia se sorte les doigts du cul et ponde un sys­tème capable de faire pivo­ter les écrans indi­vi­duel­le­ment, chose per­mise sous l’autre sys­tème d’exploitation, per­mise éga­le­ment avec les pilotes Intel sous Linux, et qui peut se révé­ler utile pour cer­taines uti­li­sa­tions (Dieu mer­ci, per­son­nel­le­ment, c’est pas trop grave, mais mon patron ou mon voi­sin de bureau ne sup­por­te­raient pas de devoir bos­ser avec deux écrans hori­zon­taux par exemple).