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 :
12
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é à 1 (+1/-0).

    $ 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                |
      |                              ||                                        |
      |                              ||                                        |
      |                              ||                                        |
      |                              ||                                        |
      +------------------------------+|                                        |
                                      +----------------------------------------+
    
  • # Liste des fabriquants

    Posté par  . Évalué à 2 (+0/-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 ?

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.