मुझे शेल स्क्रिप्ट से अपना स्क्रीन रिज़ॉल्यूशन कैसे पता चलेगा?


47

मुझे शेल स्क्रिप्ट से अपना स्क्रीन रिज़ॉल्यूशन कैसे पता चलेगा?

जवाबों:


54
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'

कमांड xdpyinfoआपके एक्स सर्वर के बारे में विभिन्न जानकारी प्रदर्शित करता है। यह मानक आउटपुट के लिए बहुत सी चीजें लिखता है लेकिन हमें केवल शब्द के साथ शुरू होने वाली रेखा की आवश्यकता होती है dimensions, इस प्रकार हम उपयोग करते हैं grep। अंत में हम sedपरिणाम को साफ करने के लिए उपयोग करते हैं।


यदि आपको अलग से x और y अक्ष आयाम की आवश्यकता है, तो आप निम्न कार्य कर सकते हैं। सबसे पहले, $( )वाक्य रचना (यानी DIMENSIONS=$(xdpyinfo ...) का उपयोग करके उपरोक्त कमांड के परिणाम को एक चर में डालें । फिर sedदो का उपयोग करने के लिए फिर से उपयोग करें: WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')और HEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
मनेरी

xdpyinfoयदि यह जानकारी तक नहीं पहुंच सकता है, तो त्रुटि संदेश प्रिंट करता है, इसलिए त्रुटि को पुनर्निर्देशित किया जा सकता है /dev/null। इस कारण से आप एक त्रुटि पुनर्निर्देशन जोड़ना चाहते हो सकता है: xdpyinfo 2> /dev/null। तो, पूर्ण शिष्य इस तरह दिखता है xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/':। यह आपकी स्क्रिप्ट को और अधिक ठोस बना देगा।
मनेरी

28

xdpyinfo | grep dimensionsआपको कुल रिज़ॉल्यूशन देगा, यदि आपके पास कई मॉनिटर हैं, तो यह उन सभी का योग होगा। xrandr --currentआपको प्रत्येक मॉनिटर के लिए प्रस्ताव देगा।

मैं पूर्ण स्क्रीन पर जाने के बिना rDesktop के लिए अधिकतम संभव रिज़ॉल्यूशन खोजने के लिए इस स्निपेट का उपयोग करता हूं:

Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)

Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)

आउटपुट:

Xaxis = 1280
Yaxis = 1024

माइनस विंडो सजावट (कमोबेश):

MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))

आउटपुट:

MaxRes = 1275x999

जो फुल स्क्रीन पर जाए बिना rDesktop के लिए अधिकतम रिज़ॉल्यूशन है।

अंतिम आदेश:

rdesktop -u $User -P -z -5 -g $MaxRes $Host &

यह अब तक ठीक काम करता है, लेकिन मैंने पूरी तरह से परीक्षण नहीं किया है।

एक अन्य उदाहरण के साथ पेंचकस के लिए है avconv:

avconv -f x11grab -r 15 -s `xrandr --current | grep  '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4

यह कहता है>xdpyinfo: Unable to open display "".
क्रा करने के लिए

आपको उपलब्ध मोड को बदलने के लिए कैसे पता चलेगा?
CMCDragonkai

यदि आपको खिड़की की सजावट (आदि) के लिए घटाव करने की आवश्यकता नहीं है, तो आप इसे एक-लाइनर में कर सकते हैं rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}')
c24w

यह कई मॉनिटरों का योग नहीं है। यह एक बाउंडिंग बॉक्स का आयाम है जिसमें सभी मॉनिटर होते हैं।
डेनिस विलियमसन

4

आप xrandr -qकमांड का उपयोग कर सकते हैं । उससे आप जरूरत पड़ने पर एक शेल स्क्रिप्ट बना सकते हैं।

कमांड पर अधिक जानकारी के लिए यहां जाएं या मैन जेंडर टाइप करें


2
#############################################
## मैं इसका उपयोग वीडियो रिकॉर्डिंग प्रोग्राम के साथ करता हूं।
# विंडो का आकार - विकल्प - स्क्रीन की रूट विंडो पर जानकारी
इको $ (xwininfo -root | grep 'ज्यामिति' | awk '{प्रिंट $ 2।}'))
# आउटपुट (ओं): 1024x768 + 0 + 0
# ऊंचाई x चौड़ाई + x + y स्थिति।
######################
## संदर्भ पुस्तिका ##
आदमी xwininfo

मैंने xwininfo -root|sed '/Height/!d;s/.* //'ऊंचाई के लिए और xwininfo -root|sed '/Width/!d;s/.* //'चौड़ाई के लिए इस्तेमाल किया ।
मिठाई

1

xdpyinfoयह कुछ पार्सिंग के साथ करेंगे। यह बहुत सी जानकारी देता है जो आपको स्क्रीन नंबर और आयामों को खोदना होगा


1

दो संभावित विकल्पों ने @ user31752 और @ एलीएज़र-ए-वर्गास के उत्तर का संयोजन किया

एक सरल रीगेक्स:

$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900

या कट का उपयोग कर:

$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900

के उपयोग grep '*' | uniq@ एलीएज़र-ए-वर्गास एक अलग लाइन प्राप्त से (उदा। "1440x900 59.90 * + 59.89") xrandr उत्पादन की है, जबकि ग्रेप 'जुड़े' एक सरल एक (पूर्व मिलता है। "LVDS1 जुड़े 1440x900 + 0 + 0 ..... ")।

@ User31752 द्वारा रेगेक्स का उपयोग अच्छा है, इसलिए मैं जिस लाइन का उपयोग कर रहा हूं वह एक सरल रीगेक्स की जरूरत है, या सरल कट कमांड को सफेद किया जा सकता है।

उदाहरण xrandr आउटपुट

$ xrandr --current
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
LVDS1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
   1440x900      59.90*+  59.89  
   1360x768      59.80    59.96  
   1152x864      60.00  
   1024x768      60.00  
   800x600       60.32    56.25  
   640x480       59.94  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

क्या एलिज़र ई। वर्गास के उत्तर के बजाय किसी को इन आदेशों का उपयोग करने का कोई कारण है ?
स्कॉट

कृपया उस जानकारी को अपने उत्तर में संपादित करें
स्कॉट

0

जैसा कि स्वीकृत उत्तर में है लेकिन कम जटिल है:

xdpyinfo | grep dimensions

आउटपुट का उदाहरण:

dimensions:    1366x768 pixels (361x203 millimeters)

0

मॉनिटर स्क्रीन डेटा पढ़ना

वेसा मानक मॉनिटर स्क्रीन रिज़ॉल्यूशन को पढ़ने का तरीका प्रदान करता है।

विस्तारित प्रदर्शन पहचान डेटा (EDID ): यह मानक कॉन्फ़िगरेशन जानकारी ले जाने के लिए डेटा प्रारूपों को परिभाषित करता है, जिससे डिस्प्ले का इष्टतम उपयोग होता है।

एक मॉनिटर आमतौर पर कई प्रस्तावों और रिफ्रेशर का समर्थन करता है। बेशक कोई अधिकतम (भौतिक) एक को पसंद करेगा।

इस मॉनिटर डेटा को पढ़ने के लिए, इनमें से कोई एक समाधान आज़माएं:

  • EDID-डिकोड

    यदि स्थापित नहीं है, तो टाइप करें

    sudo apt install edid-decode
    

    फिर edidफ़ाइल पढ़ें

    edid-decode /sys/class/drm/card0-eDP-1/edid
    
  • पढ़ने के लिए EDID

    के साथ स्थापित करें

    sudo apt install read-edid 
    

    फिर i2c स्क्रीन मॉनिटर डेटा के माध्यम से पढ़ें और इसे पार्स करें

    sudo get-edid | parse-edid
    
  • Hexdump एडिड डेटा

    अगर एडिड-टूल्स इंस्टॉल नहीं हैं, तो आप edidहेक्स-फाइल को डंप कर सकते हैं , जैसे:

    hd /sys/class/drm/card0-eDP-1/edid
    

    इस हेक्स फ़ाइल को एन्क्रिप्ट करने के लिए विकी पर एक नज़र डालें या एडिड स्पेसिफिकेशन डाउनलोड करें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.