GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo enumerar los monitores conectados con Xrandr?

Estoy trabajando en el desarrollo de una aplicación Python para Ubuntu que permite al usuario tener la resolución deseada sin necesidad de controladores de gráficos.

Para hacer esto, he estado usando xrandr , que hasta ahora ha sido bastante útil

Sin embargo, ahora tengo un problema; ¿Cómo puedo detectar el nombre del monitor? Tenía la intención de usar un comando de terminal a través de os.system , modificando la salida del terminal para obtener la salida del monitor requerida y luego almacenándola dentro del programa. Desafortunadamente, a pesar de mucho buscar, no he podido averiguar cómo puedo hacer esto.

¿Hay alguna forma en que pueda hacer esto?

Para resumir:Estoy buscando un comando de terminal que me dé el nombre del monitor, como VGA1 o DVI-0

Respuesta aceptada:

No estoy seguro de cómo lo va a aplicar en su aplicación ("permitir que un usuario tenga la resolución deseada sin necesidad de controladores de gráficos" ?), pero:

Un comando de terminal para enumerar las pantallas conectadas

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

Esto le dará las pantallas conectadas para su posterior procesamiento, como:

VGA-0
DVI-I-1

Dado que menciona Python, el fragmento a continuación también enumerará las pantallas conectadas:

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

Esto también le dará las pantallas conectadas, como:

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

Nota

Tenga en cuenta los espacios alrededor de " connected " en la cadena buscada. Son necesarios para evitar discrepancias con disconnected .

EDITAR 2019

Usando python, no es necesario usar xrandr o cualquier otra llamada del sistema en absoluto. Mejor usa 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)

Salida de ejemplo:

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

Dependiendo de la información deseada, puede hacer su elección desde https://lazka.github.io/pgi-docs/Gdk-3.0/classes/Monitor.html


Ubuntu
  1. Cómo monitorear un sistema con Sysstat en Centos

  2. ¿Cómo guardar la nueva configuración de resolución con Xrandr?

  3. Cómo listar dominios con DNSSEC

  4. Cómo monitorear la seguridad del servidor Linux con Osquery

  5. ¿Cómo enumero a todos los usuarios con root?

Cómo monitorear los recursos del sistema con Glances en Ubuntu 20.04

Cómo monitorear sus servidores Linux con Checkmk

Cómo agregar una aplicación en la lista de aplicaciones abiertas con Ubuntu

Cómo enumerar los sistemas de archivos en Linux con lfs

¿Cómo agregar una aplicación a la lista de aplicaciones abiertas con?

Cómo monitorear sus servidores Linux con Checkmk