GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come elencare i monitor collegati con Xrandr?

Sto lavorando allo sviluppo di un'applicazione Python per Ubuntu che consenta a un utente di avere la risoluzione desiderata senza richiedere driver grafici.

Per fare questo ho usato xrandr , che finora è stato piuttosto utile

Tuttavia, ora ho un problema; come posso rilevare il nome del monitor? Avevo intenzione di usare un comando da terminale tramite os.system , modificando l'output del terminale per ottenere l'output del monitor richiesto e quindi memorizzandolo all'interno del programma. Sfortunatamente, nonostante molte ricerche, non sono stato in grado di scoprire come posso farlo.

C'è un modo in cui posso farlo?

Per riassumere:Sto cercando un comando da terminale che mi dia il nome del monitor, ad esempio VGA1 o DVI-0

Risposta accettata:

Non sono sicuro di come lo applicherai nella tua applicazione ("consenti a un utente di avere la risoluzione desiderata senza richiedere driver grafici" ?), ma:

Un comando da terminale per elencare gli schermi collegati

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

Questo ti darà gli schermi collegati per ulteriori elaborazioni, come:

VGA-0
DVI-I-1

Dato che menzioni python, lo snippet di seguito elencherà anche gli schermi collegati:

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

Questo ti darà anche gli schermi collegati, come:

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

Nota

Nota gli spazi intorno a " connected " nella stringa cercata. Sono necessari per evitare discrepanze con disconnected .

MODIFICA 2019

Usando python, non è necessario usare xrandr o qualsiasi altra chiamata di sistema. Meglio usare 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)

Esempio di output:

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

A seconda delle informazioni desiderate, puoi scegliere da https://lazka.github.io/pgi-docs/Gdk-3.0/classes/Monitor.html


Ubuntu
  1. Come monitorare un sistema con Sysstat su Centos

  2. Come ottenere Ls per elencare le directory con una barra in avanti finale?

  3. Come salvare la nuova impostazione della risoluzione con Xrandr?

  4. Come elencare i domini con DNSSEC

  5. Come monitorare la sicurezza del server Linux con Osquery

Come monitorare le risorse di sistema con uno sguardo su Ubuntu 20.04

Come monitorare i tuoi server Linux con Checkmk

Come aggiungere un'applicazione nell'elenco delle applicazioni aperte in Ubuntu

Come elencare i filesystem in Linux con lfs

Come aggiungere un'applicazione all'elenco delle applicazioni aperte?

Come monitorare i tuoi server Linux con Checkmk