Journal lsdisplay / lsgpu — lister écrans et GPUs depuis le terminal dans l'esprit de lspci, lscpu, lsusb: v.0.1.0 appel à tests

Posté par  . Licence CC By‑SA.
Étiquettes :
39
4
mai
2026

Le problème

On a lsusb, lspci, lscpu… mais rien pour les écrans ou les GPUs.
Pour savoir quel écran est branché sur quelle sortie, c'est la danse du
xrandr | grep connected, cat /sys/class/drm/card*/edid | edid-decode,
nvidia-smi

J'ai écrit deux outils pour régler ça.

lsdisplay

Liste les écrans connectés avec fabricant, modèle, numéro de série,
résolution, fréquence, diagonale, et dessine un schéma ASCII du layout :

$ lsdisplay

CONNECTED DISPLAYS
==================

  DP-4         1440x2560+0+0           27"  75Hz  Iiyama PL2792Q    DisplayPort  S/N:1152031921274   rot=left [PRIMARY]
  HDMI-A-2     1440x2560+1441+0        27"  75Hz  Iiyama PL2792Q    HDMI         S/N:1152032422031   rot=left
  HDMI-A-5     5376x3024+0+2561        65"  60Hz  Samsung QN800D    HDMI         S/N:94:e6:ba:dd:9a:7a

Total: 3 display(s) connected

LAYOUT
======

  +--------------+ +--------------+
  |              | |              |
  |     DP-4*    | |   HDMI-A-2   |
  |              | |              |
  +--------------+ +--------------+

  +------------------------------+
  |                              |
  |          HDMI-A-5            |
  |                              |
  +------------------------------+

Fonctionnalités :

  • Parse les EDID directement depuis /sys/class/drm (pas de dépendance externe)
  • Fonctionne sur X11 et Wayland (KDE, Sway, wlroots)
  • Mode --json pour le scripting
  • Mode --scan pour découvrir les Smart TV Samsung sur le réseau
  • Fichier d'overrides pour corriger les EDID buggés (Samsung, je te regarde…)
  • Python 3.6+, zéro dépendance

lsgpu

Liste les GPUs avec stats NVIDIA, mapping écran par sortie :

$ lsgpu

GRAPHICS CARDS
==============

  card0: NVIDIA GA107 [GeForce RTX 3050 6GB]
         Driver: nvidia | VRAM: 6 GB | GPU:0% MEM:2077/6144MB 37°C 16.7W
    ├─ DP-4: connected ← Iiyama PL2792Q 27"
    ├─ HDMI-A-2: connected ← Iiyama PL2792Q 27"


  card1: Intel Arrow Lake-S [Intel Graphics]
         Driver: i915
    ├─ HDMI-A-5: connected ← Samsung TQ65QN800DTXXC 65"

Total: 2 GPU(s), 3 output(s) connected

Fonctionnalités :

  • Stats NVIDIA (utilisation, température, puissance, mémoire)
  • Stats AMD via sysfs
  • Mode --watch avec sparklines en temps réel
  • Liste des processus utilisant le GPU
  • Python 3.6+, zéro dépendance Python

Installation

sudo cp lsdisplay.py /usr/local/bin/lsdisplay
sudo chmod +x /usr/local/bin/lsdisplay

Paquet .deb disponible aussi. Un seul fichier Python, pas de pip, pas de venv.

Appel à testeurs

C'est une v0.1.0 — testé sur ma config (GPU NVIDIA + Intel, KDE Wayland,
3 écrans dont 2 Samsung TV). J'aimerais des retours sur :

  • Configs AMD (j'ai le code mais pas le matos pour tester)
  • Wayland hors KDE (Sway, GNOME, Hyprland)
  • Écrans avec EDID exotiques
  • Suggestions d'affichage ou de fonctionnalités

Liens

Licence : GPL-2.0

  • # $ lsdisplay --list-priority

    Posté par  . Évalué à 2 (+2/-0). Dernière modification le 04 mai 2026 à 13:18.

    $ lsdisplay --list-priority
    DISPLAY PRIORITY ORDER
    =====================
    
      1. HDMI-A-5     5376x3024    65"  Samsung TQ65QN800DTXXC  [HDMI/card2] <- PRIMARY
      2. DP-4         1440x2560    27"  Iiyama PL2792Q  [DisplayPort/card0]
      3. HDMI-A-2     1440x2560    27"  Iiyama PL2792Q  [HDMI/card0]
    
  • # Test config AMD

    Posté par  (Mastodon) . Évalué à 3 (+0/-0). Dernière modification le 04 mai 2026 à 08:17.

    Ça m'a tout l'air d'être OK:

    GRAPHICS CARDS
    ==============
    
      card1: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900 GRE/7900M] (rev c8)
             Driver: amdgpu | VRAM: 24 GB | GPU:11% MEM:1113/24560MB 46°C 16.0W
        ├─ DP-1: connected ← BenQ BenQ LCD 24"
        ├─ HDMI-A-1: connected ← BenQ BenQ LCD 24"
    
    Total: 1 GPU(s), 2 output(s) connected
    
    
    
    CONNECTED DISPLAYS
    ==================
    
      DP-1         2560x1440+0+0           24"  60Hz  BenQ BenQ LCD        DisplayPort  S/N:65Nxxxxxxxx     [PRIMARY]
      HDMI-A-1     2560x1440+2560+0        24"  60Hz  BenQ BenQ LCD        HDMI         S/N:65Nxxxxxxxx    
    
    Total: 2 display(s) connected
    
    LAYOUT
    ======
    
      +-----------------------------------++-----------------------------------+
      |                                   ||                                   |
      |                                   ||                                   |
      |                                   ||                                   |
      |                                   ||                                   |
      |                                   ||                                   |
      |               DP-1*               ||              HDMI-A-1             |
      |                                   ||                                   |
      |                                   ||                                   |
      |                                   ||                                   |
      |                                   ||                                   |
      +-----------------------------------++-----------------------------------+
    

    Pour info je suis également sous Wayland/KDE.

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

  • # ne reconnais pas mon environnement

    Posté par  (site web personnel) . Évalué à 1 (+1/-0).

    Je suis sous mageia 9 et j'utilise sway, lsdisplay considère que je suis sous xwayland et n'arrive pas à détecter les modèles de mes écrans.

    GRAPHICS CARDS
    ==============
    
      card0: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 (rev cb)
             Driver: amdgpu | VRAM: 2 GB | GPU:36% MEM:1299/2048MB 69°C 28.1W
        ├─ DP-3: connected ← AOC Q27G2G4 27"
        ├─ eDP-1: connected ← BOE  13"
    
      card1: 
             Driver: evdi
    
      card2: 
             Driver: evdi
    
      card3: 
             Driver: evdi
    
      card4: 
             Driver: evdi
    
    Total: 5 GPU(s), 2 output(s) connected
    ~❯ lsdisplay
    CONNECTED DISPLAYS
    ==================
    
      XWAYLAND2    1880x1254+0+0           13"  60Hz                                    S/N:               
      XWAYLAND3    2560x1440+1881+0        27" 144Hz                                    S/N:               
    
    Total: 2 display(s) connected
    
    LAYOUT
    ======
    
      +------------------------------++----------------------------------------+
      |                              ||                                        |
      |                              ||                                        |
      |                              ||                                        |
      |                              ||                                        |
      |                              ||                                        |
      |          XWAYLAND2           ||               XWAYLAND3                |
      |                              ||                                        |
      |                              ||                                        |
      |                              ||                                        |
      |                              ||                                        |
      +------------------------------+|                                        |
                                      +----------------------------------------+
    
    • [^] # Re: ne reconnais pas mon environnement

      Posté par  . Évalué à 2 (+2/-0).


      Salut Matthieu, pourrais-tu retester ?

      C'est corrigé dans le dernier commit — tu dois juste re-télécharger lsdisplay.py et vérifier que wlr-randr est installé (c'est lui qui donne les vraies infos sous Sway, au lieu de xrandr qui ne voit que les sorties XWAYLAND).

  • # Liste des fabriquants

    Posté par  . Évalué à 4 (+2/-0).

    Super script !

    Dans ton code, je vois ça :

    PNP_MANUFACTURERS = {
        "AAC": "AcerView", "ACR": "Acer", "AOC": "AOC", "AUS": "ASUS",
        "BNQ": "BenQ", "CMN": "Chimei Innolux", "DEL": "Dell",
        "ENC": "Eizo", "FUS": "Fujitsu Siemens", "GSM": "LG (GoldStar)",
        "HPN": "HP", "HWP": "HP", "IVM": "Iiyama", "LEN": "Lenovo",
        "LGD": "LG Display", "MAX": "Maxdata", "MEI": "Panasonic",
        "MEL": "Mitsubishi", "NEC": "NEC", "PHL": "Philips",
        "SAM": "Samsung", "SDC": "Samsung Display", "SNY": "Sony",
        "SHP": "Sharp", "TSB": "Toshiba", "VSC": "ViewSonic",
        "HSD": "HannStar", "BOE": "BOE", "AUO": "AU Optronics",
        "INL": "InnoLux", "MSI": "MSI", "GBT": "Gigabyte",
    }

    Tu les as trouvé où ces codes ? Quelqu'un connaît l'histoire derrière ces codes ?

  • # Source des PNP_MANUFACTURERS

    Posté par  . Évalué à 5 (+5/-0).

    La source officielle est le PNP ID Registry maintenu par Microsoft (en tant qu'administrateur du standard VESA/UEFI): https://uefi.org/PNP_ID_List

    C'est la base de référence. Chaque fabricant enregistre son code 3 lettres auprès de l'UEFI Forum (anciennement via Microsoft).

    Il existe aussi :
    - https://github.com/vcrhonek/hwdata — le paquet hwdata de Linux, fichier pnp.ids (utilisé par edid-decode, lshw, etc.)

    - /usr/share/hwdata/pnp.ids — sur la plupart des distributions Linux

    $ cat /usr/share/hwdata/pnp.ids| nl | head
    1 AAA Avolites Ltd
    2 AAE Anatek Electronics Inc.
    3 AAM Aava Mobile Oy
    4 AAN AAEON Technology Inc.
    5 AAT Ann Arbor Technologies
    6 ABA ABBAHOME INC.
    7 ABC AboCom System Inc.
    8 ABD Allen Bradley Company
    9 ABE Alcatel Bell
    10 ABO D-Link Systems Inc

    $ cat /usr/share/hwdata/pnp.ids| nl | tail
    2548 ZTE ZTE Corporation
    2549 ZTI Zoom Telephonics Inc
    2550 ZTM ZT Group Int'l Inc.
    2551 ZTT Z3 Technology
    2552 ZWE Shenzhen Zowee Technology Co., LTD
    2553 ZYD Zydacron Inc
    2554 ZYP Zypcom Inc
    2555 ZYT Zytex Computers
    2556 ZYX Zyxel
    2557 ZZZ Boca Research Inc

  • # Test config WSL2

    Posté par  . Évalué à 1 (+0/-0).

    Pour le fun, ca marche aussi sur WSL (Debian sur Windows).

    ./lsdisplay.py
    CONNECTED DISPLAYS
    ==================
    
      XWAYLAND0    5120x2160+0+0                60Hz                                    S/N:
      XWAYLAND1    1920x1200+5120+0        14"  60Hz                                    S/N:
    
    Total: 2 display(s) connected
    
    LAYOUT
    ======
    
      +---------------------------------------------------++-------------------+
      |                                                   ||                   |
      |                                                   ||                   |
      |                                                   ||                   |
      |                                                   ||     XWAYLAND1     |
      |                                                   ||                   |
      |                     XWAYLAND0                     ||                   |
      |                                                   |+-------------------+
      |                                                   |
      |                                                   |
      |                                                   |
      |                                                   |
      +---------------------------------------------------+
    

    La partie GPU ne renvoi rien (logique dans mon cas, je tenterais une WSL avec gpu amd dans la soirée par soucis de complétude)

    ./lsgpu.py
    No GPUs found.

  • # marche pas

    Posté par  (site web personnel) . Évalué à 2 (+0/-0).

    [bob@trash ~]$ git clone https://github.com/AGuyMarc/lsdisplay.git
    Cloning into 'lsdisplay'...
    remote: Enumerating objects: 50, done.
    remote: Counting objects: 100% (50/50), done.
    remote: Compressing objects: 100% (33/33), done.
    remote: Total 50 (delta 18), reused 44 (delta 12), pack-reused 0 (from 0)
    Receiving objects: 100% (50/50), 52.47 KiB | 1.09 MiB/s, done.
    Resolving deltas: 100% (18/18), done.
    
    [bob@trash ~]$ cd lsdisplay/
    
    [bob@trash lsdisplay]$ python3 lsdisplay.py 
    Traceback (most recent call last):
      File "lsdisplay.py", line 25, in <module>
        from dataclasses import dataclass, field, asdict
    ModuleNotFoundError: No module named 'dataclasses'
    
    [bob@trash lsdisplay]$ python3 --version
    Python 3.6.8
    
    [bob@trash lsdisplay]$ lsb_release -a
    LSB Version:    :core-4.1-amd64:core-4.1-noarch
    Distributor ID: AlmaLinux
    Description:    AlmaLinux release 8.10 (Cerulean Leopard)
    Release:    8.10
    Codename:   CeruleanLeopard
    • [^] # Re: marche pas

      Posté par  . Évalué à 1 (+1/-0). Dernière modification le 05 mai 2026 à 08:12.

      Merci pour le test !

      Python 3.6 n'a pas dataclasses dans la stdlib (ajouté en 3.7). C'est corrigé dans le dernier commit — le requis est maintenant Python 3.7+ et le message d'erreur est explicite.


      Sur AlmaLinux 8 :

      # dnf install python39 
      

      puis

      $ python3.9 lsdisplay.py
      $ python3.9 lsgpu
      
  • # Test sous Kubuntu 26.04 (Wayland)

    Posté par  (site web personnel, Mastodon) . Évalué à 3 (+1/-0).

    lsdisplay récupéré depuis Git (commit ae71bc5bb0d630dab9d0ad4355aea02bfab7bb66) fonctionne parfaitement. Il ne comprends pas que mon 3ème écran est inutilisable parce qu’une autre source est sélectionnée, mais Wayland ne le comprends pas non plus, et X11 ne le comprenait pas non plus avant, donc c’est normal – mais c’est une limitation qu’il pourrait être intéressant de documenter.

    lsgpu récupéré depuis Git (commit 3ecbd96f7a0c8e7c25ef8ec0e876e6969a104cd4) fonctionne parfaitement lui aussi, y compris les infos des senseurs :

    ./lsgpu.py
    GRAPHICS CARDS
    ==============
    
      card1: Advanced Micro Devices, Inc. [AMD/ATI] Navi 32 [Radeon RX 7700 XT / 7800 XT] (rev c8)
             Driver: amdgpu | VRAM: 16 GB | GPU:1% MEM:2020/16368MB 47°C 32.0W
        ├─ DP-1: connected ← BenQ BenQ GW2765 27"
        ├─ DP-2: connected ← Samsung LF22T450F 21"
        ├─ DP-3: connected ← Samsung LF22T450F 21"
    
    Total: 1 GPU(s), 3 output(s) connected
    

    Dans les deux cas j’ai un doute sur la numérotation des ports DisplayPort (je pensais avor le BenQ sur le DP-2, au milieu sur la carte), mais comme ils sont particulièrement inaccessibles sur mon setup actuel, je ne peux pas vérifier.

    La connaissance libre : https://zestedesavoir.com

  • # Résultats

    Posté par  (site web personnel) . Évalué à 6 (+3/-0). Dernière modification le 05 mai 2026 à 09:32.

    Le lsgpy donne plus d'infos sur le nom des écrans que le lsdisplay.

    Les affichages du type « display(s) » ça me semble toujours bizarre : la programmation a décidé de laisser le calcul du singulier/pluriel à l'exercice du lectorat. D'ailleurs « DISPLAYS » et « CARDS » sont bien au pluriel.

    CONNECTED DISPLAYS
    ==================
    
      eDP          1920x1080+0+0           16"  60Hz  AU Optronics         eDP          S/N:               
      DVI-I-2-2    1920x1080+4480+0        23"  60Hz                       DVI          S/N:               
      DVI-I-1-1    2560x1440+1920+0        27"  60Hz                       DVI          S/N:                [PRIMARY]
    
    Total: 3 display(s) connected
    
    LAYOUT
    ======
    
      +---------------------++----------------------------++---------------------+
      |                     ||                            ||                     |
      |                     ||                            ||                     |
      |                     ||                            ||                     |
      |         eDP         ||                            ||      DVI-I-2-2      |
      |                     ||         DVI-I-1-1*         ||                     |
      |                     ||                            ||                     |
      +---------------------+|                            |+---------------------+
                             |                            |                       
                             +----------------------------+                    
    
    
    GRAPHICS CARDS
    ==============
    
      card1: Advanced Micro Devices, Inc. [AMD/ATI] Barcelo (rev d5)
             Driver: amdgpu | VRAM: 0 GB | GPU:27% MEM:443/512MB 67°C 0.0W
        ├─ eDP-1: connected ← AU Optronics  16"
    
      card2: 
             Driver: evdi
        ├─ DVI-I-1: connected ← Dell DELL U2722D 27"
    
      card3: 
             Driver: evdi
        ├─ DVI-I-2: connected ← HP HP E231 23"
    
      card4: 
             Driver: evdi
    
      card5: 
             Driver: evdi
    
    Total: 5 GPU(s), 3 output(s) connected
    
    • [^] # Re: Résultats

      Posté par  (site web personnel, Mastodon) . Évalué à 3 (+1/-0). Dernière modification le 06 mai 2026 à 09:42.

      Idem j’ai le nom des écran dans lsgpu mais pas dans lsdisplay. C’est pas un bug, mais ce serait bien de les avoir dans lsdisplay également.
      En regardant les sorties json, je pense que je comprends pourquoi on l’a pas pour lsdisplay, le manufacturer et le model sont ceux de la classe du port, et sont probablement vides. Alors que ceux affichés dans lsgpu doivent être dans un autre device de /sys qui contient bien le manufacturer. Faudrait probablement lier les deux. Si j’ai le temps aujourd’hui, je tente une contribution…

      En tout cas sous Xfce/X11/Manjaro ça marche très bien :

      CONNECTED DISPLAYS
      ==================
      
        eDP-1        1920x1200+3600+0        16"  60Hz  Chimei Innolux       eDP          S/N:               
        DP-1-1       1920x1200+1680+0        24"  60Hz                       DisplayPort  S/N:                [PRIMARY]
        DP-1-2       1680x1050+0+0           22"  60Hz                       DisplayPort  S/N:               
      
      Total: 3 display(s) connected
      
      LAYOUT
      ======
      
        +---------------------++------------------------++------------------------+
        |                     ||                        ||                        |
        |                     ||                        ||                        |
        |                     ||                        ||                        |
        |        DP-1-2       ||                        ||                        |
        |                     ||        DP-1-1*         ||         eDP-1          |
        |                     ||                        ||                        |
        |                     ||                        ||                        |
        +---------------------+|                        ||                        |
                               +------------------------++------------------------+
      
      GRAPHICS CARDS
      ==============
      
        card0: 01:00.0 3D controller: NVIDIA Corporation AD107GLM [RTX 2000 Ada Generation Laptop GPU] (rev a1)
               Driver: nvidia | GPU:0% MEM:4/8188MB 45°C 1.4W
      
        card1: Intel Corporation Meteor Lake-P [Intel Arc Graphics] (rev 08)
               Driver: i915
          ├─ DP-5: connected ← Samsung S24C650 24"
          ├─ DP-6: connected ← Samsung S22E450 22"
          ├─ eDP-1: connected ← Chimei Innolux  16"
      
      Total: 2 GPU(s), 3 output(s) connected
      
      • [^] # Re: Résultats

        Posté par  . Évalué à 2 (+1/-0).

        Regarde mon commentaire en dessous. lsdisplay cherche un edid dans /sys/class/drm/ avec comme heuristique de retrouver le nom de la sortie (par exemple DP-1-1) dans le nom des devices (DP-5 pour toi apparemment). Ça ne marche pas. La bonne chose à faire serait de passer par le CONNECTOR_ID dans les propriété de xrandr (à rechercher dans /sys/class/drm/*/connector_id)

  • # Cohérence des informations

    Posté par  . Évalué à 4 (+3/-0). Dernière modification le 05 mai 2026 à 14:24.

    Pour savoir quel écran est branché sur quelle sortie, c'est la danse du xrandr | grep connected, cat /sys/class/drm/card*/edid | edid-decode, nvidia-smi

    Je me reconnais parfaitement :-)

    Plusieurs remarques après un test rapide :

    1) c'est super !

    2) quand on regarde les sorties (json pour scripter) des deux outils, c'est difficile de faire le lien entre eux. Chez moi, j'ai par exemple :

    lsdisplay.py --json
    [
      {
        "name": "eDP-1",
        "drm_path": "",
        "width": 3840,
        "height": 2160,
        "x": 0,
        "y": 0,
        "rotation": "normal",
        "primary": false,
        "connector": "eDP",
        "manufacturer_id": "SHP",
        "manufacturer": "Sharp",
        "model": "",
        "serial": "",
        "width_mm": 346,
        "height_mm": 194,
        "diagonal_inches": 16,
        "refresh_rate": 60.0
      },
      {
        "name": "DP-1-3",
        "drm_path": "",
        "width": 3840,
        "height": 2160,
        "x": 0,
        "y": 0,
        "rotation": "normal",
        "primary": false,
        "connector": "DisplayPort",
        "manufacturer_id": "",
        "manufacturer": "",
        "model": "",
        "serial": "",
        "width_mm": 878,
        "height_mm": 485,
        "diagonal_inches": 39,
        "refresh_rate": 30.0
      }
    ]
    lsgpu.py --json
    [
      {
        "card": "card0",
        "name": "Intel Corporation Kaby Lake-H GT2 [HD Graphics 630] (rev 04)",
        "pci_address": "0000:00:02.0",
        "driver": "i915",
        "vram_gb": 0,
        "outputs": [
          {
            "name": "DP-1",
            "connected": false
          },
          {
            "name": "DP-2",
            "connected": false
          },
          {
            "name": "DP-3",
            "connected": false
          },
          {
            "name": "DP-4",
            "connected": false
          },
          {
            "name": "DP-5",
            "connected": true,
            "monitor": {
              "manufacturer": "Philips",
              "model": "PHL BDM4065",
              "serial": "",
              "diagonal_inches": 39
            }
          },
          {
            "name": "HDMI-A-1",
            "connected": false
          },
          {
            "name": "HDMI-A-2",
            "connected": false
          },
          {
            "name": "eDP-1",
            "connected": true,
            "monitor": {
              "manufacturer": "Sharp",
              "model": "",
              "serial": "",
              "diagonal_inches": 16
            }
          }
        ]
      }
    ]
    

    Faire le lien entre DP-1-3 de lsdisplay et DP-5 de lsgpu ne me semble pas évident.

    3) la représentation graphique des écrans les mets côte à côte quand ils sont en mirroir (total). Je n'ai pas encore testé avec mirroir partiel (un écran plus grand que l'autre)

    4) si tu as besoin d'un sponsor ou d'un maintainer pour mettre ces logiciels officiellement dans Debian (et donc à terme toutes les distrib dérivées), n'hésite pas à me contacter.

    • [^] # Re: Cohérence des informations

      Posté par  . Évalué à 1 (+0/-0).

      Une autre chose à laquelle je pense. Cela faisait plusieurs semaines/mois qu'evince me mettait systématiquement un message de warning à chaque démarrage comme quoi je n'avais pas d'accélération matérielle pour OpenGL, que je n'avais que l'émulation logicielle (mesa).

      J'ai mis du temps à trouver la raison :
      - j'avais une (très) vieille config dans /etc/xorg/xorg.conf qui forçait le chargement du driver intel
      - le driver intel de xorg ne charge(ait) plus le driver 3D correct (il a récemment changé de nom, https://askubuntu.com/questions/1544601/libgl-error-unable-to-load-driver-i965-dri-so m'avait mis sur la piste)

      J'ai donc complètement viré /etc/xorg/xorg.conf, et maintenant ce sont les modules modesetting + vesa + glamoregl qui sont chargés et utilisés par xorg (et je n'ai plus le warning avec evince).

      Au passage, j'ai découvert la commande env MESA_VK_DEVICE_SELECT=list vulkaninfo permettant de voir les gpu (réels ou virtuels dans le cas de llvm/mesa) permettant de faire de l'accélération 3D.

      J'en arrive à mes questions en rapport avec ce sujet :
      - est-il possible de remonter les drivers xorg utilisés sur la machine pour gérer les CPU (ça ferait aussi apparaître nouveau/NVidia, …)
      - est-il possible/pertinent de montrer les GPU pour 3D (dans lsgpu ? avec une option ?)

    • [^] # Re: Cohérence des informations

      Posté par  . Évalué à 1 (+0/-0). Dernière modification le 05 mai 2026 à 13:06.

      Faire le lien entre DP-1-3 de lsdisplay et DP-5 de lsgpu ne me semble pas évident.

      En fait, c'est vraiment un problème : lsdisplay ne trouve pas les infos edid de mes écrans.

      ls /sys/class/drm/
      card0  card0-DP-1  card0-DP-2  card0-DP-3  card0-DP-4  card0-DP-5  card0-DP-6  card0-DP-7  card0-DP-8  card0-eDP-1  card0-HDMI-A-1  card0-HDMI-A-2  renderD128  version
      

      => la fonction read_edid_for_output de lsdisplay trouve les infos pour eDP-1 mais pas pour DP-1-3
      Dans mes scripts, j'avais utilisé les infos EDID de xrandr --verbose car je n'avais pas trouvé comment faire le lien avec le bon répertoire dans /sys/class/drm

      Il semblerait que la propriété CONNECTOR_ID dans xrandr quand elle existe puisse servir à faire le lien (https://forums.developer.nvidia.com/t/feature-request-xrandr-connector-id-property/240578)

      • [^] # Re: Cohérence des informations

        Posté par  . Évalué à 2 (+1/-0).

        Et je viens de découvrir l'outil jc qui permet de parser les sorties de commandes (dont xrandr) et d'avoir le résultat en json.

        jc xrandr --properties  --current | jq | less
        
        • [^] # Re: Cohérence des informations

          Posté par  . Évalué à 2 (+2/-0).


          Merci Vincent, retour précieux !

          DP-1-3 vs DP-5 : c'est le cas MST (hub/dock DisplayPort) que je n'avais pas anticipé. Bonne piste avec CONNECTOR_ID — je vais implémenter le mapping via xrandr --properties.
          En fallback, parser l'EDID directement depuis xrandr --verbose est aussi une option.

          Miroir : à corriger, je n'ai pas ce cas chez moi.

          Debian : oui avec plaisir ! Je t'envoie un mail ? du coup il faudra passer en v1.0 ou je peux rester en v0.x ?

          jc : je ne connaissais pas, merci pour la découverte.

          • [^] # Re: Cohérence des informations

            Posté par  . Évalué à 3 (+2/-0).

            Pour le numéro de version dans Debian, on fait vraiment comme on veut.
            Tu peux me contacter sur mon adresse vdanjean@debian.org si besoin.

            J'ai aussi découvert à cette occasion jc quand j'ai voulu regarder s'il n'y avait pas un moyen facile/déjà écrit de récupérer l'info de xrandr.

  • # Test sous Ubuntu 22.04.5 LTS

    Posté par  (site web personnel) . Évalué à 1 (+1/-0).

    bigbob@bigbob-t480s:~$ lsb_release -a && lsgpu && lsdisplay
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 22.04.5 LTS
    Release:    22.04
    Codename:   jammy
    GRAPHICS CARDS
    ==============
    
      card1: Intel Corporation UHD Graphics 620 (rev 07)
             Driver: i915
        ├─ DP-4: connected ← Dell DELL P2214H 22"
        ├─ DP-5: connected ← Dell DELL P2214H 22"
        ├─ eDP-1: connected ← BOE  14"
    
    Total: 1 GPU(s), 3 output(s) connected
    CONNECTED DISPLAYS
    ==================
    
      eDP-1        1920x1080+1920+664      14"  60Hz  BOE                  eDP          S/N:                [PRIMARY]
      DP-2-2       1920x1080+0+69          22"  60Hz                       DisplayPort  S/N:               
      DP-2-3       1920x1080+3840+0        22"  60Hz                       DisplayPort  S/N:               
    
    Total: 3 display(s) connected
    
    LAYOUT
    ======
    
      +-----------------------+                      +-----------------------+
      |                       |                      |                       |
      |                       |                      |                       |
      |                       |                      |                       |
      |         DP-2-2        |                      |         DP-2-3        |
      |                       |                      |                       |
      |                       |                      |                       |
      +-----------------------+                      +-----------------------+
    
                             +-----------------------+
                             |                       |
                             |                       |
                             |                       |
                             |         eDP-1*        |
                             |                       |
                             |                       |
                             +-----------------------+
    
    bigbob@bigbob-t480s:~$
    

    Fonctionne parfaitement.

  • # config Gnome + AMD + wayland

    Posté par  . Évalué à 1 (+1/-0).

    ça a l'air ok de mon coté

    $ lsgpu
    GRAPHICS CARDS
    ==============
    
      card0: Advanced Micro Devices, Inc. [AMD/ATI] Navi 22 [Radeon RX 6700/6700 XT/6750 XT / 6800M/6850M XT] (rev c5)
             Driver: amdgpu | VRAM: 12 GB | GPU:0% MEM:943/12272MB 40°C 6.0W
        ├─ DP-3: connected ← Iiyama PL3271Q 32"
    
    Total: 1 GPU(s), 1 output(s) connected
    
    $ lsdisplay
    CONNECTED DISPLAYS
    ==================
    
      DP-3         2560x1440+0+0           32"  60Hz  Iiyama PL3271Q       DisplayPort  S/N:16843009        [PRIMARY]
    
    Total: 1 display(s) connected
    
    LAYOUT
    ======
    
      +----------------------------------------------------------------------+
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                DP-3*                                 |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      +----------------------------------------------------------------------+
    
  • # un écran 8" affiché à 59"

    Posté par  (Mastodon) . Évalué à 1 (+0/-0).

    GPU NVIDIA + Intel, KDE Wayland également, donc pas de surprise, ça fonctionne,

    Mais un écran un peu exotique : écran 8" intégré dans le boitier PC (Jonsbo D31),
    qui se retrouve affiché à 59"

    $ ./lsgpu.py
    GRAPHICS CARDS
    ==============
    
      card1: 00:02.0 Display controller: Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630]
             Driver: i915
        ├─ HDMI-A-1: connected ← SGN L01N8A 59"
    
      card2: NVIDIA Corporation TU104 [GeForce RTX 2080 Rev. A] (rev a1)
             Driver: nvidia | GPU:18% MEM:1625/8192MB 44°C 22.8W
        ├─ DP-4: connected ← Samsung Odyssey G91SD 49"
    
    Total: 2 GPU(s), 2 output(s) connected
    
    $ ./lsdisplay.py
    CONNECTED DISPLAYS
    ==================
    
      DP-4         5120x1440+0+0           49" 144Hz  Samsung Odyssey G91SD DisplayPort  S/N:HNTXA00193      [PRIMARY]
      HDMI-A-1     1280x800+5120+0         59"  60Hz  SGN L01N8A           HDMI         S/N:20221020        rot=left
    
    Total: 2 display(s) connected
    
    LAYOUT
    ======
    
      +--------------------------------------------------------++--------------+
      |                                                        ||              |
      |                                                        ||              |
      |                                                        ||   HDMI-A-1   |
      |                                                        ||              |
      |                          DP-4                          |+--------------+
      |                                                        |                
      |                                                        |                
      |                                                        |                
      +--------------------------------------------------------+   
    
    
    $ edid-decode /sys/class/drm/card1-HDMI-A-1/edid
    edid-decode (hex):
    
    00 ff ff ff ff ff ff 00 4c ee c0 11 5c 8c 34 01
    2b 20 01 03 81 11 0a 78 ea f8 d0 a0 54 47 8d 23
    24 4d 54 00 00 00 01 01 01 01 01 01 01 01 01 01
    01 01 01 01 01 01 98 1c 20 88 30 00 18 50 3c 10
    a4 00 20 00 35 00 00 1e 00 00 00 fc 00 4c 30 31
    4e 38 41 0a 20 20 20 20 20 20 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 68
    
    ----------------
    
    Block 0, Base EDID:
      EDID Structure Version & Revision: 1.3
      Vendor & Product Identification:
        Manufacturer: SGN
        Model: 4544
        Serial Number: 20221020 (0x01348c5c)
        Made in: week 43 of 2022
      Basic Display Parameters & Features:
        Digital display
        DFP 1.x compatible TMDS
        Maximum image size: 17 cm x 10 cm
        Gamma: 2.20
        DPMS levels: Standby Suspend Off
        RGB color display
        First detailed timing is the preferred timing
      Color Characteristics:
        Red  : 0.6279, 0.3310
        Green: 0.2792, 0.5507
        Blue : 0.1396, 0.1416
        White: 0.3007, 0.3281
      Established Timings I & II: none
      Standard Timings: none
      Detailed Timing Descriptors:
        DTD 1:   800x1280   59.973258 Hz   5:8     78.205 kHz     73.200000 MHz (800 mm x 1280 mm)
                     Hfront   60 Hsync  16 Hback   60 Hpol P
                     Vfront   10 Vsync   4 Vback   10 Vpol P
        Display Product Name: 'L01N8A'
        Empty Descriptor
        Dummy Descriptor:
    Checksum: 0x68
    
    
    
  • # Ok sur ArchLinux/KDE

    Posté par  (site web personnel) . Évalué à 1 (+0/-0).

    Bonjour,
    Tout fonctionne sur ArchLinux/KDE :

    
    ≥ ./lsdisplay.py
    CONNECTED DISPLAYS
    ==================
    
      eDP-1        1920x1080+3440+508      14"  60Hz  AU Optronics         eDP          S/N:               
      DP-2         3440x1440+0+0           34" 100Hz  ASUS VG34VQEL1A      DisplayPort  S/N:S6LMDW012834    [PRIMARY]
    
    Total: 2 displays connected
    
    LAYOUT
    ======
    
      +----------------------------------------------------------------------+
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                DP-2*                                 |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      |                                                                      |
      +----------------------------------------------------------------------+
    
                                                                            +---------------------------------------+
                                                                            |                                       |
                                                                            |                                       |
                                                                            |                                       |
                                                                            |                                       |
                                                                            |                                       |
                                                                            |                 eDP-1                 |
                                                                            |                                       |
                                                                            |                                       |
                                                                            |                                       |
                                                                            |                                       |
                                                                            |                                       |
                                                                            +---------------------------------------+
    
    ≥ chmod +x lsgpu.py
    ≥ ./lsgpu.py
    GRAPHICS CARDS
    ==============
    
      card1: Intel Corporation Raptor Lake-P [Iris Xe Graphics] (rev 04)
             Driver: i915
        ├─ DP-2: connected ← ASUS VG34VQEL1A 34"
        ├─ eDP-1: connected ← AU Optronics  14"
    
    Total: 1 GPU, 2 outputs connected
    
    

    Je peux essayer d'en faire des paquets AUR si tu le souhaites (il faudra trouver un moyen que je sois notifié lors de nouvelles versions).

    • [^] # Re: Ok sur ArchLinux/KDE

      Posté par  (site web personnel) . Évalué à 1 (+0/-0).

      J'ai créer les paquets dans AUR ! Donc ils sont disponibles dans ArchLinux et dérivées.

    • [^] # Re: Ok sur ArchLinux/KDE

      Posté par  . Évalué à 0 (+0/-0). Dernière modification le 16 mai 2026 à 11:42.

      Bien vu — c'est un bug de layout réel. D'après les coords :

      • DP-2 : 3440×1440 à +0+0 → occupe x=0..3440, y=0..1440
      • eDP-1 : 1920×1080 à +3440+508 → occupe x=3440..5360, y=508..1588

      Donc physiquement eDP-1 est collé à droite de DP-2, légèrement décalé en bas (508 px d'offset). Le rendu correct serait quelque chose comme :

        +-----------------------+
        |                       |
        |         DP-2*         |
        |                       +----------+
        |                       |          |
        |                       |  eDP-1   |
        +-----------------------+          |
                                |          |
                                +----------+
      

      C'est bien cela? Or les 2 écrans sont séparés verticalement avec un grand vide → l'algo de layout les met sur 2 lignes distinctes au lieu de les superposer.. Tu confirmes?
      bug -> https://github.com/AGuyMarc/lsdisplay/issues

      Pour archlinux,

      $ curl -s                                                           
        'https://aur.archlinux.org/rpc/?v=5&type=search&by=name&arg=lsgpu' | jq                                                    
          curl -s 'https://aur.archlinux.org/rpc/?v=5&type=search&by=name&arg=lsdisplay' | jq                                      
        {                                                                                                                          
          "resultcount": 1,                                                                                                        
          "results": [                                                                                                             
            {                                                                                                                      
              "Description": "List GPUs with details, outputs, and connected monitors.",                                           
              "FirstSubmitted": 1778595804,                                                                                        
              "ID": 2074684,                                                                                                       
              "LastModified": 1778601039,                                                                                          
              "Maintainer": "seraf1",                                                                                              
              "Name": "lsgpu-git",                                                                                                 
              "NumVotes": 1,                                                                                                       
              "OutOfDate": null,                                                                                                   
              "PackageBase": "lsgpu-git",                                                                                          
              "PackageBaseID": 236170,                                                                                             
              "Popularity": 1,                                                                                                     
              "URL": "https://github.com/AGuyMarc/lsgpu",                                                                          
              "URLPath": "/cgit/aur.git/snapshot/lsgpu-git.tar.gz",                                                                
              "Version": "0.1.1-3"                                                                                                 
            }                                                                                                                      
          ],                                                                                                                       
          "type": "search",                                                                                                        
          "version": 5                                                                                                             
        }                                                                                                                          
        {                                                                                                                          
          "resultcount": 1,                                                                                                        
          "results": [                                                                                                             
            {                                                                                                                      
              "Description": "List connected displays with details and ASCII layout diagram.",                                     
              "FirstSubmitted": 1778592260,                                                                                        
              "ID": 2074688,                                                                                                       
              "LastModified": 1778601163,                                                                                          
              "Maintainer": "seraf1",                                                                                              
              "Name": "lsdisplay-git",                                                                                             
              "NumVotes": 1,                                                                                                       
              "OutOfDate": null,                                                                                                   
              "PackageBase": "lsdisplay-git",                                                                                      
              "PackageBaseID": 236166,                                                                                             
              "Popularity": 1,                                                                                                     
              "URL": "https://github.com/AGuyMarc/lsdisplay",                                                                      
              "URLPath": "/cgit/aur.git/snapshot/lsdisplay-git.tar.gz",                                                            
              "Version": "0.1.1-4"                                                                                                 
            }                                                                                                                      
          ],                                                                                                                       
          "type": "search",                                                                                                        
          "version": 5                    
      

      Je vais mettre à jour demain.

      • [^] # Re: Ok sur ArchLinux/KDE

        Posté par  (site web personnel) . Évalué à 1 (+0/-0). Dernière modification le 18 mai 2026 à 08:48.

        C'est bien cela, la config vu depuis la configuration systèmes de KDE ressemble à ça :

        Titre de l'image

      • [^] # Re: Ok sur ArchLinux/KDE

        Posté par  (site web personnel) . Évalué à 1 (+0/-0).

        Pour les paquets ArchLinux, je vais mettre à jour dès que possible. Par contre, j'ai un soucis avec le nom de l’exécutable lsgpu, le nom rentre en conflit avec celui du paquet "intel-gpu-tools", pour le moment, je me suis permit de renommer les exécutable "lsdisplays" et "lsgpus", si tu as un meilleure proposition, je suis preneur.

  • # lsgpu → lsgpus

    Posté par  . Évalué à 0 (+0/-0).

    Merci pour le retour, et désolé pour ce conflit que je n'avais pas anticipé.

    ▎ J'ai vérifié : le conflit existe aussi sur Debian/Ubuntu (apt-file show igt-gpu-tools montre /usr/bin/lsgpu et lsgpu.1.gz), donc pas seulement sur Arch. En lisant le man page d'igt-gpu-tools, leur lsgpu n'est pas Intel-only contrairement à ce que
    ▎ le nom du paquet laisse penser — c'est un outil d'énumération bas niveau pour le framework de tests IGT, pour un public différent du nôtre.

    ▎ Je suis ta proposition pour lsgpu → lsgpus. En revanche, lsdisplay n'est en conflit nulle part à ma connaissance (rien dans apt-file search lsdisplay, un conflit existerait-il sur Arch?). En l'absence de conflit, je préfèrerais le laisser tel quel.

    ▎ Je prépare une v0.2.0 dès que disponible avec :
    ▎ - binaire /usr/bin/lsgpus (au lieu de lsgpu)
    ▎ - man page lsgpus.1
    ▎ - paquet Debian renommé en lsgpus pour la cohérence

    ▎ Le repo GitHub reste AGuyMarc/lsgpu (pour ne pas casser les liens). Je te ping ici dès que la v0.2.0 est taguée pour que tu puisses mettre à jour l'AUR sans avoir à patcher localement.

    ▎ Merci pour la patience et la vigilance sur le packaging !

    python3 lsgpu.py --version

    lsgpu 0.1.5 (2026-05-18 lun 23h28m33s)

    python3 lsdisplay.py --version

    lsdisplay 0.2.1 (2026-05-18 lun 23h27m25s)

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.