GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie listet man verbundene Monitore mit Xrandr auf?

Ich arbeite an der Entwicklung einer Python-Anwendung für Ubuntu, die es einem Benutzer ermöglicht, die gewünschte Auflösung zu haben, ohne Grafiktreiber zu benötigen.

Dazu habe ich xrandr verwendet , was bisher ziemlich nützlich war

Allerdings habe ich jetzt ein Problem; Wie kann ich den Monitornamen erkennen? Ich hatte vor, einen Terminalbefehl über os.system zu verwenden , ändern Sie die Terminalausgabe, um die erforderliche Monitorausgabe zu erhalten, und speichern Sie sie dann im Programm. Leider konnte ich trotz langer Suche nicht herausfinden, wie ich das bewerkstelligen kann.

Gibt es eine Möglichkeit, dies zu tun?

Um es zusammenzufassen:Ich suche nach einem Terminalbefehl, der mir den Monitornamen gibt, z. B. VGA1 oder DVI-0

Akzeptierte Antwort:

Ich bin mir nicht sicher, wie Sie es in Ihrer Anwendung anwenden werden („einem Benutzer ermöglichen, die gewünschte Auflösung zu haben, ohne dass Grafiktreiber erforderlich sind“ ?), aber:

Ein Terminalbefehl zum Auflisten verbundener Bildschirme

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

Dadurch erhalten Sie die verbundenen Bildschirme zur weiteren Bearbeitung, wie:

VGA-0
DVI-I-1

Da Sie Python erwähnen, listet das folgende Snippet auch verbundene Bildschirme auf:

#!/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())

Dadurch erhalten Sie auch die verbundenen Bildschirme, wie:

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

Hinweis

Beachten Sie die Leerzeichen um " connected " in der gesuchten Zeichenfolge. Sie werden benötigt, um Konflikte mit disconnected zu verhindern .

BEARBEITEN 2019

Bei Verwendung von Python ist die Verwendung von xrandr nicht erforderlich oder irgendein anderer Systemaufruf überhaupt. Verwenden Sie besser 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)

Beispielausgabe:

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

Abhängig von den gewünschten Informationen können Sie Ihre Auswahl unter https://lazka.github.io/pgi-docs/Gdk-3.0/classes/Monitor.html

treffen
Ubuntu
  1. So überwachen Sie ein System mit Sysstat auf Centos

  2. Wie bringt man Ls dazu, Verzeichnisse mit einem nachgestellten Schrägstrich aufzulisten?

  3. Wie speichere ich die neue Auflösungseinstellung mit Xrandr?

  4. So listen Sie Domains mit DNSSEC auf

  5. So überwachen Sie die Sicherheit von Linux-Servern mit Osquery

So überwachen Sie Systemressourcen mit Blicken auf Ubuntu 20.04

So überwachen Sie Ihre Linux-Server mit Checkmk

So fügen Sie eine Anwendung zur Liste der geöffneten Anwendungen in Ubuntu hinzu

So listen Sie Dateisysteme in Linux mit lfs auf

Wie füge ich eine Anwendung zur Liste der mit Anwendungen geöffneten hinzu?

So überwachen Sie Ihre Linux-Server mit Checkmk