История изменений
Исправление Darth_Revan, (текущая версия) :
у тебя для 20 будет один сценарий, а на 20 тыс ты бросишься переписывать. причем сидеть будешь и гуглить библиотеку или подходящий метод для данного нового кейза.
Если нужно обязательно по мере вывода парсить, то тогда вот:
#!/usr/bin/env python3
import re
import subprocess
import sys
import yaml
out = {}
proc = subprocess.Popen(["xrandr"],
stdout=subprocess.PIPE, universal_newlines=True)
for line in proc.stdout:
res = re.match(
r"(\S+)\sconnected\s+(primary\s+)?(\d+)x(\d+)([+-]\d+)([+-]\d+)",
line)
if res:
out[res[1]] = {
"name" : res[1],
"w" : int(res[3]),
"h" : int(res[4]),
"x" : int(res[5]),
"y" : int(res[6]),
"primary" : 1 if res[2] else 0,
}
yaml.dump(out, sys.stdout, default_flow_style=False)
Исходная версия Darth_Revan, :
у тебя для 20 будет один сценарий, а на 20 тыс ты бросишься переписывать. причем сидеть будешь и гуглить библиотеку или подходящий метод для данного нового кейза.
Если нужно обязательно по мере вывода парсить, то тогда вот:
#!/usr/bin/env python3
import re
import subprocess
import sys
import yaml
out = {}
proc = subprocess.Popen(["xrandr"],
stdout = subprocess.PIPE, universal_newlines=True)
for line in proc.stdout:
res = re.match(
r"(\S+)\sconnected\s+(primary\s+)?(\d+)x(\d+)([+-]\d+)([+-]\d+)",
line)
if res:
out[res[1]] = {
"name" : res[1],
"w" : int(res[3]),
"h" : int(res[4]),
"x" : int(res[5]),
"y" : int(res[6]),
"primary" : 1 if res[2] else 0,
}
yaml.dump(out, sys.stdout, default_flow_style=False)