ฉันกำลังมองหาวิธีการรายงานความละเอียดการแสดงผล ฉันต้องการตั้งค่าสคริปต์เพื่อเปิดใช้rdesktop
งานและฉันต้องการเปิดใช้งานบนเครื่องหลายเครื่องที่มีความละเอียดแตกต่างกันดังนั้นฉันจึงต้องการวิธีการตรวจสอบแบบไดนามิก
ฉันกำลังมองหาวิธีการรายงานความละเอียดการแสดงผล ฉันต้องการตั้งค่าสคริปต์เพื่อเปิดใช้rdesktop
งานและฉันต้องการเปิดใช้งานบนเครื่องหลายเครื่องที่มีความละเอียดแตกต่างกันดังนั้นฉันจึงต้องการวิธีการตรวจสอบแบบไดนามิก
คำตอบ:
xrandr
ใช้คำสั่ง ไม่มีข้อโต้แย้งใด ๆ มันจะแสดงความละเอียดที่มีอยู่และค่าปัจจุบัน (ที่มีเครื่องหมายดอกจัน) ตัวอย่างเช่น
$ xrandr | fgrep '*'
xrandr |g grep \*
จะมีเล่ห์เหลี่ยมหรือไม่?
xdpyinfo | grep dimensions
วิธีการแก้ปัญหาทางเลือก: xdpyinfo
เก่ากว่าxrandr
ดังนั้นอาจพกพาได้มากกว่าหากคุณใช้การแจกจ่ายที่เก่ามากหรือเซิร์ฟเวอร์ X ที่แตกต่างกัน
xdpyinfo
ขณะที่xrandr
ระบุหน้าจอและความละเอียดได้อย่างถูกต้อง สิ่งนี้อาจจะใช่หรือไม่ใช่ปัญหาขึ้นอยู่กับบริบท
xdpyinfo
ดูเหมือนว่าจะรายงานขนาดที่ถูกต้องเป็นพิกเซล แต่ก็รายงานความละเอียดที่ผิด (DPI) เช่นบนจอภาพของฉันกับ dimesions 3840x2160 (พื้นเมืองและจริง) และขนาด 708mm x 399mm รายงานโดยxrandr
, xdpyinfo
กล่าวว่าความละเอียดที่ 96x96 จุดต่อนิ้ว
คุณสามารถรับความละเอียดแนวนอนและแนวตั้งได้โดยใช้คำสั่งต่อไปนี้:
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
ฉันควรดูยากขึ้นเล็กน้อยก่อนโพสต์ xrandr
จะสะท้อนการตั้งค่าการแสดงผลปัจจุบันหากไม่ได้รับข้อโต้แย้งอื่น ๆ
ตามค่าเริ่มต้นสิ่งนี้จะถ่ายโอนการตั้งค่าการแสดงผลที่เป็นไปได้ทั้งหมดซึ่งสามารถกรองได้ดังนี้:
xrandr | egrep '^[^ ]|[0-9]\*\+'
xrandr
ผลลัพธ์สำหรับการใช้ imagemagickxrandr |grep \* |awk '{print $1}'