ปิดใช้งานการแสดง Unplugged (xrandr)


17

ฉันมีแล็ปท็อปที่มีเอาต์พุตวิดีโอสองรายการที่ฉันใช้เมื่อฉันอยู่ที่บ้าน (HDMI1, VGA1) หากต้องการเปิดใช้งานฉันทำสิ่งนี้:

xrandr --output HDMI1 --right-of LVDS1 --auto
xrandr --output LVDS1 --off
xrandr --output VGA1 --right-of HDMI1 --auto

เมื่อฉันต้องการไปทำงานฉันใช้แล็ปท็อปของฉัน แต่เรียกใช้ต่อไปนี้ก่อน

xrandr --output VGA1 --off
xrandr --output LVDS1 --left-of HDMI1 --auto
xrandr --output HDMI1 --off

จากนั้นจอแสดงผลแล็ปท็อปของฉันก็ทำงานเหมือนที่ควร

ปัญหาที่ฉันพบคือบางครั้งฉันจำไม่ได้ว่าจะปิดการใช้งานทั้งสองหน้าจอก่อนที่จะทำให้คอมพิวเตอร์ทำงาน เมื่อผมมาถึงผมลองชุดต่างๆของ--outputและ--offแต่ฉันไม่สามารถได้รับหน้าจอของฉันเปิดใช้อีกครั้ง

นี่คือเอาท์พุทที่ฉันรันxrandrโดยไม่มีการแสดงผล:

Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 8192 x 8192
LVDS1 connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1024x768       60.0··
   800x600        60.3     56.2··
   640x480        59.9··
VGA1 disconnected 1920x1080+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
HDMI1 disconnected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
DP1 disconnected (normal left inverted right x axis y axis)
  1920x1080 (0x4c)  148.5MHz
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock   67.5KHz
        v: height 1080 start 1084 end 1089 total 1125           clock   60.0Hz

เกือบทุกคำสั่งที่ฉันได้ลองส่งคืน:

xrandr: Configure crtc 2 failed
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  21 (RRSetCrtcConfig)
  Serial number of failed request:  40
  Current serial number in output stream:  40

มันเหมือนกับว่าจอภาพทั้งสองไม่ยอมแพ้ CRTC ของพวกเขาและเนื่องจากฮาร์ดแวร์ของฉันรองรับเฉพาะ 2 มันจึงถูกล็อคจนกว่าฉันจะเสียบจอภาพเหล่านั้นและปิดการใช้งาน

คำตอบ:


11

คุณสามารถกำหนดค่าทั้งหมดในคำสั่งเดียวเช่น:

xrandr --output VGA1 --off --output HDMI1 --off --output LVDS1 --left-of HDMI1 --auto

และนั่นควรจะทำให้งานได้เช่นกันเนื่องจากเป็นคำสั่งที่เขียนยาก (นาน) คุณสามารถสร้างสคริปต์ที่ทดสอบหน้าจอที่แนบมาในปัจจุบันและทำการตั้งค่าที่ต้องการ (คุณสามารถเพิ่มลงในคีย์ลัด)

if [ -z `xrandr --query | grep "HDMI1 connected"` ]
then
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --off \
        --output LVDS1 --mode 1366x768 --pos 0x0 --rotate normal \
        --output VGA1 --off
else
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --mode 1920x1080 --pos 0x0 --rotate normal --primary \
        --output LVDS1 --off --output VGA1 --off
fi

มันไม่ใช่สคริปต์แฟนซี แต่อาจใช้ได้สำหรับคุณ


1

ดูเหมือนจะไม่มีเหตุการณ์ที่สร้างขึ้นเมื่อถอดปลั๊กหน้าจออย่างน่าเสียดาย มีโพลสำรวจสคริปต์ xrandr ค่อนข้างหนัก แต่คุณสามารถดู / sys / class / drm / * / สถานะและโพลไฟล์เหล่านั้นจากนั้นดำเนินการ xrandr ที่ต้องการเมื่อสถานะเปลี่ยนจาก 'เชื่อมต่อ' เป็นอย่างอื่น (หรือหายไปทั้งหมด)


1

ฉันรู้ว่านี่เป็นเธรดเก่าสุด แต่ฉันต้องการแบ่งปันวิธีที่ฉันแก้ไขปัญหาโดยใช้ข้อมูลของคุณเกี่ยวกับการเปิดและปิดจอภาพแล้วยกเลิกการเชื่อมต่อ ผมใช้โปรแกรมที่เรียกว่าautorandrautorandr --save dockedและพื้นเพียงแค่ตั้งค่าการแสดงผลของฉันที่มีสองหน้าจอแล้ว จากนั้นผมก็ใช้ว่าแล้วถอดปลั๊กจอฉันตามด้วยxrandr --output VGA --off autorandr --save mobileAutorandr จะสลับไปมาระหว่างโหมดที่แตกต่างกันโดยอัตโนมัติโดยขึ้นอยู่กับว่าคุณได้เสียบปลั๊กหรือถอดปลั๊ก หวังว่าจะช่วยให้คนอื่นที่สะดุดกับเรื่องนี้! นี่เป็นเหมือนคำตอบที่แท้จริงครั้งแรกของฉันดังนั้นแจ้งให้ฉันทราบหากฉันสามารถเปลี่ยนแปลงสิ่งใดให้ชัดเจนยิ่งขึ้น

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