การควบคุมแต่ละจอภาพไม่สามารถทำได้ด้วย xset (และ X11 จริง ๆ )
ตามที่ชื่อแสดงให้เห็นมันเป็นไปไม่ได้ด้วยเหตุผลว่า xset
สร้างขึ้นอย่างไรและเนื่องจากฟังก์ชัน X11 ที่ใช้ หากเราดูซอร์สโค้ดการxset
เรียกDPMSForceLevel(dpy,DPMSModeSuspend)
( บรรทัด 557 ) และตัวแปรการแสดงผลdpy
นั้นมาจากXOpenDisplay()
ฟังก์ชั่น ( บรรทัดที่ 203 ) และนั่นคือตามคำจำกัดความ :
เซิร์ฟเวอร์พร้อมกับหน้าจอและอุปกรณ์อินพุตเรียกว่าจอแสดงผล
กล่าวอีกนัยหนึ่งxset
ใช้การตั้งค่าทั่วโลกกับจอแสดงผลทั้งหมดไม่ใช่เฉพาะหน้าจอ จำเป็นต้องเปลี่ยนxset
ซอร์สโค้ดเพื่อให้สามารถใช้งานได้ ส่วนขยาย DPMS เองส่วนใหญ่ดูเหมือนว่าจะโทรเฉพาะการแสดงผลทั้งหมดไม่ใช่หน้าจอแต่ละหน้าดังนั้นจึงไม่สามารถแม้แต่เขียนโค้ดที่กำหนดเองด้วยไลบรารี X11
การควบคุมด้วยตนเองว่าการตั้งค่าผ่าน/sys
ระบบย่อยนั้นดูเหมือนจะไม่ทำงาน
$ sudo bash -c 'echo Off > /sys/class/drm/card0-VGA-1/dpms'
[sudo] password for admin:
bash: /sys/class/drm/card0-VGA-1/dpms: Permission denied
หน้าจอยังถูกนำออกจากโหมด DPMS เมื่อมีเหตุการณ์สำคัญหรือเมาส์เกิดขึ้นดังนั้นเมื่อพิจารณาว่าคุณอาจต้องการย้ายเมาส์หรือใช้แป้นพิมพ์การกระทำเหล่านั้นอาจทำให้จอภาพออกจากโหมด DPMS
วิธีแก้ปัญหาอื่น ๆ
ทางเลือกที่ดีที่สุด (และวิธีแก้ปัญหาการทำงานจริงทางร่างกาย) คือxrandr
- สามารถใช้เพื่อควบคุม "เอาต์พุต" แต่ละรายการ โดยเฉพาะอย่างยิ่ง,
xrandr --output VGA-1 -off
จะตั้งค่าเอาท์พุทนั้นออก ใช่คุณได้กล่าวว่าคุณไม่ต้องการใช้โซลูชันนี้เนื่องจากมันไม่เร็วพออย่างไรก็ตามจนถึงขณะนี้ก็เป็นวิธีที่ดีที่สุดที่มีอยู่ มันมีข้อดีสองประการ:
- ภูมิคุ้มกันต่อเหตุการณ์สำคัญและเมาส์
- ควบคุมการแพร่ระบาดอย่างอิสระไม่เหมือน
xset
xrandr --output VGA-1 --brightness 0.1
จะ colorize หน้าจอในลักษณะดังกล่าวที่ว่ามันปรากฏออกแม้ว่าจะ--brightness
เป็นโซลูชันซอฟต์แวร์เพื่อการแสดงผลที่ไม่ได้จางจริงในระดับฮาร์ดแวร์และไม่เป็นมันออกไปในระดับฮาร์ดแวร์ อย่างไรก็ตามมันทำหน้าที่ในการทำให้หน้าจอว่างและยังสามารถป้องกันเหตุการณ์คีย์ / เมาส์ได้อีกด้วย
ฉันได้ดูซอร์สโค้ดของโปรแกรมรักษาหน้าจอของ Mate และ Budgie ซึ่งเป็นส้อมของโปรแกรมรักษาหน้าจอของ GNOME แต่ในทั้งสองกรณีพวกเขาดูเหมือนจะเป็นโซลูชันซอฟต์แวร์เนื่องจากไม่มีการกล่าวถึง DPMS ในซอร์สโค้ด