के बिना पाइथन में प्रत्येक डिस्प्ले के लिए डिस्प्ले गिनती और रिज़ॉल्यूशन प्राप्त करें। मैं उबंटू चला रहा हूं और मैं संलग्न डिस्प्ले की संख्या, उनके वर्तमान रिज़ॉल्यूशन और यदि संभव हो, तो एक दूसरे के संबंध में उनकी स्थिति प्राप्त करना चाहता हूं। क्योंकि मुझे xrandr का कंसोल आउटपुट पार्सिंग पसंद नहीं है - कम से कम अगर मुझे ऐसा नहीं करना है - मैं Python-XLib या इसी तरह के पाइथोनिक दृष्टिकोण के साथ ऐसा करना चाहता हूं। इस तरहबिना किसी xrandr
$ xrandr
Screen 0: minimum 320 x 200, current 2960 x 1050, maximum 8192 x 8192
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
1680x1050 60.0*+
1400x1050 60.0
1280x1024 75.0 60.0
1440x900 59.9
1280x960 75.0 60.0
1152x864 75.0
1280x720 75.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 72.8 75.0 66.7 60.0
720x400 70.1
VGA-0 connected 1280x1024+1680+26 (normal left inverted right x axis y axis) 376mm x 301mm
1280x1024 60.0 + 75.0*
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 72.8 75.0 66.7 60.0
720x400 70.1
मैं अजगर के साथ इन मूल्यों को प्राप्त करना चाहते हैं, एक तरह से:
यह मेरा प्रदर्शन config के लिए xrandr उत्पादन होता है
displays = get_displays()
print displays[0].width # out: 1680
print displays[1].width # out: 1280
print displays[0].x_position # out: 0
print displays[1].x_position # out: 1680
जब अजगर के माध्यम से जानकारियां प्राप्त करने की कोशिश -XLib (या अन्य libs जैसे pyGTK और pygame), ऐसा लगता है कि सभी डिस्प्ले हमेशा एक एकल डिस्प्ले के रूप में संभाले जाते हैं। उदाहरण के लिए यह है कि क्या मैं अब तक Xlib साथ मिल गया है:
import Xlib
import Xlib.display
display = Xlib.display.Display(':0')
print display.screen_count() # output: 1
root = display.screen().root
print root.get_geometry().width # output: 2960 -> no way to get width of single display?
print root.get_geometry().height # output: 1050
मैं जानता हूँ कि अजगर के भीतर xrandr बुला प्रदर्शन जानकारियां पाने के लिए:
import subprocess
output = subprocess.Popen('xrandr | grep "\*" | cut -d" " -f4',shell=True, stdout=subprocess.PIPE).communicate()[0]
displays = output.strip().split('\n')
for display in displays:
values = display.split('x')
width = values[0]
height = values[1]
print "Width:" + width + ",height:" + height
लेकिन जैसा कि मैंने कहा मैं बिना एक क्लीनर दृष्टिकोण पसंद करेंगे कंसोल आउटपुट पार्स करने के लिए। क्या xrandr आउटपुट को पार्स किए बिना पाइथन के साथ विस्तृत जानकारी (विस्तृत) प्रदर्शन जानकारी प्राप्त करने का कोई तरीका नहीं है?
आप अपने समाधान साझा करने कृपया कोई आपत्ति होगी। – jagguli
ऐसा लगता है कि उदाहरण के लिंक को बदल दिया गया है। मैंने इसे अपडेट किया है। –
xilb/xrandr से कनेक्ट किए गए आउटपुट नामों को कैसे प्राप्त किया जाए? –