GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment répertorier les moniteurs connectés avec Xrandr ?

Je travaille sur le développement d'une application python pour Ubuntu qui permet à un utilisateur d'avoir la résolution souhaitée sans nécessiter de pilotes graphiques.

Pour ce faire, j'ai utilisé xrandr , qui jusqu'à présent, a été très utile

Cependant, j'ai maintenant un problème; comment puis-je détecter le nom du moniteur ? J'avais l'intention d'utiliser une commande de terminal via os.system , en modifiant la sortie du terminal pour obtenir la sortie moniteur requise, puis en la stockant dans le programme. Malheureusement, malgré de nombreuses recherches, je n'ai pas trouvé comment je peux faire cela.

Existe-t-il un moyen de faire cela ?

Pour résumer :Je recherche une commande de terminal qui me donne le nom du moniteur, comme VGA1 ou DVI-0

Réponse acceptée :

Je ne sais pas comment vous allez l'appliquer dans votre application ("permettre à un utilisateur d'avoir la résolution souhaitée sans nécessiter de pilotes graphiques" ?), mais :

Une commande de terminal pour lister les écrans connectés

xrandr | grep " connected " | awk '{ print$1 }'

Cela vous donnera les écrans connectés pour un traitement ultérieur, comme :

VGA-0
DVI-I-1

Puisque vous mentionnez python, l'extrait ci-dessous répertorie également les écrans connectés :

#!/usr/bin/env python3
import subprocess

def screens():
    output = [l for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()]
    return [l.split()[0] for l in output if " connected " in l]

print(screens())

Cela vous donnera également les écrans connectés, comme :

['VGA-0', 'DVI-I-1']

Remarque

Notez les espaces autour de " connected " dans la chaîne recherchée. Ils sont nécessaires pour éviter les incompatibilités avec disconnected .

ÉDITER 2019

En utilisant python, pas nécessaire d'utiliser xrandr ou tout autre appel système. Mieux vaut utiliser Gdk :

#!/usr/bin/env python3
import gi
gi.require_version("Gdk", "3.0")
from gi.repository import Gdk

allmonitors = []

gdkdsp = Gdk.Display.get_default()
for i in range(gdkdsp.get_n_monitors()):
    monitor = gdkdsp.get_monitor(i)
    scale = monitor.get_scale_factor()
    geo = monitor.get_geometry()
    allmonitors.append([
        monitor.get_model()] + [n * scale for n in [
            geo.x, geo.y, geo.width, geo.height
        ]
    ])

print(allmonitors)

Exemple de sortie :

[['eDP-1', 0, 0, 3840, 2160], ['DP-2', 3840, 562, 1680, 1050]]

En fonction des informations souhaitées, vous pouvez faire votre choix depuis https://lazka.github.io/pgi-docs/Gdk-3.0/classes/Monitor.html


Ubuntu
  1. Comment surveiller un système avec Sysstat sur Centos

  2. Comment obtenir Ls pour répertorier les répertoires avec une barre oblique à la fin ?

  3. Comment répertorier les domaines avec DNSSEC

  4. Comment surveiller la sécurité du serveur Linux avec Osquery

  5. Comment lister tous les utilisateurs avec root ?

Comment surveiller les ressources système avec des regards sur Ubuntu 20.04

Comment surveiller vos serveurs Linux avec Checkmk

Comment ajouter une application dans la liste des applications ouvertes avec Ubuntu

Comment lister les systèmes de fichiers sous Linux avec lfs

Comment ajouter une application à la liste des applications ouvertes avec ?

Comment surveiller vos serveurs Linux avec Checkmk