web-dev-qa-db-ja.com

接続されたモニターをxrandrでリストするにはどうすればよいですか?

Ubuntu用のpythonアプリケーションの開発に取り組んでいます。これにより、ユーザーはグラフィックドライバーを必要とせずに希望の解像度を得ることができます。
これを行うには、xrandrを使用しました。これまでのところ、これは非常に便利です。

ただし、現在問題があります。モニター名を検出するにはどうすればよいですか? os.systemを介して端末コマンドを使用し、必要なモニター出力を取得するために端末出力を変更し、それをプログラム内に保存するつもりでした。残念ながら、多くの検索にもかかわらず、私はこれを行う方法を見つけることができませんでした。

これを行う方法はありますか?

まとめると:VGA1DVI-0などのモニター名を提供する端末コマンドを探しています

6
TellMeWhy

アプリケーションにどのように適用するかわかりません("グラフィックスドライバーを必要とせずにユーザーが希望する解像度を使用できるようにする"?)、しかし:

接続された画面をリストする端末コマンド

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

これにより、次のような接続画面が表示され、さらに処理を行うことができます。

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())

これにより、次のような接続画面も表示されます。

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

注意

検索文字列の" connected "の前後のスペースに注意してください。 disconnectedとの不一致を防ぐために必要です。

6
Jacob Vlijm

pythonpythonを使用して、接続されているモニター名を取得できます。

$ 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
Sylvain Pineau

Popenでbashコマンドを使用できます。

import os
    list_display = os.popen("xrandr --listmonitors | grep '*' | awk {'print $4'}").read().splitlines()
4
Antoine Boucher