Я работаю над разработкой приложения Python для Ubuntu, которая позволяет пользователю иметь их нужное разрешение, не требуя графических драйверов.
Чтобы сделать это, я использовал xrandr
, который до сих пор, было довольно полезно
Однако у меня теперь есть проблема; как я могу обнаружить название монитора? Я намеревался использовать терминальную команду через os.system
, изменение терминального вывода для получения необходимого вывода монитора и затем хранения его в рамках программы. К сожалению, несмотря на большой поиск, я не мог узнать, как я могу сделать это.
Есть ли какой-либо путь, которым я могу сделать это?
Подвести итог его: я ищу терминальную команду, которая дает мне название монитора, такой VGA1
или DVI-0
Я не уверен, как Вы собираетесь подать заявку, это в Вашем приложении ( "позволяют пользователю иметь их нужное разрешение, не требуя графических драйверов" ?), но:
xrandr | grep " connected " | awk '{ print$1 }'
Этот wil дают Вам связанные экраны для последующей обработки, как:
VGA-0
DVI-I-1
#!/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
.
Можно использовать 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
Можно использовать команду удара с popen:
import os
list_display = os.popen("xrandr --listmonitors | grep '*' | awk {'print $4'}").read().splitlines()