Как я могу перечислить подключенный монитор (мониторы) с xrandr?

Я работаю над разработкой приложения Python для Ubuntu, которая позволяет пользователю иметь их нужное разрешение, не требуя графических драйверов.
Чтобы сделать это, я использовал xrandr, который до сих пор, было довольно полезно

Однако у меня теперь есть проблема; как я могу обнаружить название монитора? Я намеревался использовать терминальную команду через os.system, изменение терминального вывода для получения необходимого вывода монитора и затем хранения его в рамках программы. К сожалению, несмотря на большой поиск, я не мог узнать, как я могу сделать это.

Есть ли какой-либо путь, которым я могу сделать это?

Подвести итог его: я ищу терминальную команду, которая дает мне название монитора, такой VGA1 или DVI-0

6
задан 22 June 2015 в 05:44

3 ответа

Я не уверен, как Вы собираетесь подать заявку, это в Вашем приложении ( "позволяют пользователю иметь их нужное разрешение, не требуя графических драйверов" ?), но:

команда терминала А для списка соединенных экранов

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

Этот wil дают Вам связанные экраны для последующей обработки, как:

VGA-0
DVI-I-1

, Так как Вы упоминаете Python, отрывок ниже также перечислит соединенные экраны:

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

Этот wil также дают Вам связанные экраны, как:

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

Примечание к Примечанию

пробелы [приблизительно 114] в искавшей строке. Они необходимы для предотвращения несоответствий с disconnected.

6
ответ дан 23 November 2019 в 07:20

Можно использовать python и всего python для получения связанных названий монитора:

$ python3 -c 'from gi.repository import Gdk; screen=Gdk.Screen.get_default(); \
[print(screen.get_monitor_plug_name(i)) for i in range(screen.get_n_monitors())]'
DP1
LVDS1
5
ответ дан 23 November 2019 в 07:20

Можно использовать команду удара с popen:

import os
    list_display = os.popen("xrandr --listmonitors | grep '*' | awk {'print $4'}").read().splitlines()
4
ответ дан 23 November 2019 в 07:20

Другие вопросы по тегам:

Похожие вопросы: