รับความละเอียดการแสดงผลจากบรรทัดคำสั่งสำหรับ Linux Desktop


32

ฉันกำลังมองหาวิธีการรายงานความละเอียดการแสดงผล ฉันต้องการตั้งค่าสคริปต์เพื่อเปิดใช้rdesktopงานและฉันต้องการเปิดใช้งานบนเครื่องหลายเครื่องที่มีความละเอียดแตกต่างกันดังนั้นฉันจึงต้องการวิธีการตรวจสอบแบบไดนามิก


คำตอบ:


37

xrandrใช้คำสั่ง ไม่มีข้อโต้แย้งใด ๆ มันจะแสดงความละเอียดที่มีอยู่และค่าปัจจุบัน (ที่มีเครื่องหมายดอกจัน) ตัวอย่างเช่น

$ xrandr | fgrep '*'

คุณสามารถเพิ่มตัวอย่างผลลัพธ์ต่อท้ายคำตอบได้หรือไม่ และฉันคาดเดาว่าxrandr |g grep \*จะมีเล่ห์เหลี่ยมหรือไม่?
Ehtesh Choudhury

11

xdpyinfo | grep dimensionsวิธีการแก้ปัญหาทางเลือก: xdpyinfoเก่ากว่าxrandrดังนั้นอาจพกพาได้มากกว่าหากคุณใช้การแจกจ่ายที่เก่ามากหรือเซิร์ฟเวอร์ X ที่แตกต่างกัน


2
แน่นอน แต่การตั้งค่าหลายจอภาพ (ทั้งหมด?) ปรากฏเป็นหน้าจอเดียวในxdpyinfoขณะที่xrandrระบุหน้าจอและความละเอียดได้อย่างถูกต้อง สิ่งนี้อาจจะใช่หรือไม่ใช่ปัญหาขึ้นอยู่กับบริบท
Stéphane Gourichon

หมายเหตุ: ในขณะที่xdpyinfoดูเหมือนว่าจะรายงานขนาดที่ถูกต้องเป็นพิกเซล แต่ก็รายงานความละเอียดที่ผิด (DPI) เช่นบนจอภาพของฉันกับ dimesions 3840x2160 (พื้นเมืองและจริง) และขนาด 708mm x 399mm รายงานโดยxrandr, xdpyinfoกล่าวว่าความละเอียดที่ 96x96 จุดต่อนิ้ว
Ruslan

7

คุณสามารถรับความละเอียดแนวนอนและแนวตั้งได้โดยใช้คำสั่งต่อไปนี้:

xdpyinfo | grep dimensions | awk '{print $2}' | awk -Fx '{print $1, $2}'

หรือในรูปแบบกะทัดรัดมากขึ้น (ตามคำแนะนำของ Peter.O ในความคิดเห็นนี้ ):

xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}' 

สำหรับ exmaple บนจอแสดงผล 1600x900 สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้:

1600 900

จากนั้นคุณสามารถวางค่าลงในตัวแปรที่แยกกันโดยใช้คำสั่ง:

read RES_X RES_Y <<<$(xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}')

แสดงค่าของตัวแปรข้างต้นโดยใช้คำสั่ง:

echo $RES_X, $RES_Y

บนจอแสดงผล 1600x900 เอาต์พุตคือ:

1600, 900

1
xdpyinfo | awk -F '[x] +' '/ ขนาด: / {พิมพ์ $ 3, $ 4}'
Peter.O

@ Peter.O ขอบคุณ นี่เป็นรูปแบบที่กะทัดรัดของคำสั่ง ฉันได้อัพเดตคำตอบแล้ว
crayzeewulf

อันที่จริง แต่การตั้งค่าหลายจอภาพ (ทั้งหมด?) ปรากฏเป็นหน้าจอเดียวใน xdpyinfo ในขณะที่ xrandr ระบุหน้าจอและความละเอียดอย่างถูกต้อง สิ่งนี้อาจจะใช่หรือไม่ใช่ปัญหาขึ้นอยู่กับบริบท
Stéphane Gourichon

5

ฉันควรดูยากขึ้นเล็กน้อยก่อนโพสต์ xrandrจะสะท้อนการตั้งค่าการแสดงผลปัจจุบันหากไม่ได้รับข้อโต้แย้งอื่น ๆ

ตามค่าเริ่มต้นสิ่งนี้จะถ่ายโอนการตั้งค่าการแสดงผลที่เป็นไปได้ทั้งหมดซึ่งสามารถกรองได้ดังนี้:

xrandr | egrep '^[^ ]|[0-9]\*\+'

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.