มีวิธีปิดหน้าจอแต่ละรายการหรือไม่


13

ฉันใช้ xset เพื่อปิดหน้าจอของฉันเช่นนี้:

xset dpms force off

มีวิธีใดบ้างที่จะปิดหน้าจอเดียวเมื่อคุณมีมากกว่าหนึ่งหน้าจอที่เชื่อมโยงกับจอแสดงผล X เดียวกันได้หรือไม่?


@myrdd: คุณช่วยอธิบายสิ่งที่คุณต้องการปรับปรุงให้ดีขึ้นได้ไหม?
David Foerster

ฉันต้องการทราบรายละเอียด: (a)คุณลักษณะที่ต้องการเป็นไปได้ในทางเทคนิคหรือไม่ - นั่นคือเพื่อ "ปิด" หน้าจอแต่ละหน้าจอ (ฉันไม่ได้หมายถึงxrandr [...] --off) - (b)มีการพึ่งพาใด ๆ หรือไม่ - นั่นคือ ชิปเซ็ตกราฟิกการ์ดและ / หรือไดรเวอร์จำเป็นต้องมีคุณสมบัติที่เฉพาะเจาะจงหรือไม่ - (c)เนื่องจากคุณสมบัติที่ต้องการยังไม่พร้อมใช้งาน (ในฐานะคำสั่ง CLI) อะไรคือขั้นตอนต่อไป
myrdd

คำตอบ:


4

หากคุณใช้ Ubuntu Desktop คุณควรใช้ระบบ> การตั้งค่า> จอภาพ นี่จะแสดงจอภาพทั้งหมดของคุณคลิกที่สิ่งที่คุณต้องการปิดใช้งานจากนั้นใช้ปุ่มตัวเลือก 'เปิด / ปิด' เพื่อปิดใช้งานจอภาพที่เฉพาะเจาะจง

หากคุณต้องการทำสิ่งนี้จากบรรทัดคำสั่งคุณควรจะสามารถxrandr --output <name> --offปิดการใช้งานเอาต์พุตซึ่งควรทำให้จอภาพดับลง


1
ปัญหาคือเมื่อคุณใช้ Nvidia TwinView หน้าจอทั้งสองปรากฏเป็นหน้าจอเดียวสำหรับทั้ง xrandr และ xset ดังนั้นคุณจึงไม่สามารถปิดจอภาพทีละหน้าได้ นอกจากนี้ Gnome Monitor Preferences ยังถูกปิดใช้งานและคุณต้องใช้การควบคุมไดรเวอร์ของ Nvidia แทน เมื่อคุณปิดการใช้งานหนึ่งในจอภาพที่มีการตั้งค่า nvidia มันจะปิดการใช้งานจอภาพอย่างสมบูรณ์ติดขัดหน้าต่างทั้งหมดของคุณบนหน้าจออื่น ฉันแค่ต้องการปิดจอภาพหนึ่งจอเพื่อดูภาพยนตร์อีกเรื่องหนึ่ง
Neil

@Neil อาจเป็นประโยชน์ในการเพิ่มข้อมูลฮาร์ดแวร์ของคุณไปยังคำถามและติดแท็กด้วย NVIDIA ด้วย
Jorge Castro

2
@JorgeCastro มันไม่ได้เกี่ยวข้องกับฮาร์ดแวร์และ TwinView: ดูเหมือนจะไม่มีวิธีปิดหน้าจอทีละรายการเมื่ออยู่ใน $ DISPLAY เดียวกันยกเว้นการลบ / ปิดการใช้งานจากการกำหนดค่า RandR เราต้องการปิดเช่นหน้าจอแล็ปท็อป แต่เก็บหน้าต่างไว้ที่นั่น
blueyed

@muru คุณเป็นลิงแก้ไข! ฉันเห็นการแก้ไขของคุณต่อไป
MathCubes

4

ปัญหากับคำตอบที่มีอยู่

แม้ว่าจะมีคำตอบเจ็ดปีที่ผ่านมาโดยมีการโหวตสามครั้ง แต่ก็ไม่ได้รับการยอมรับเพราะมันทำให้หน้าต่างที่เปิดอยู่ทั้งหมดบนหน้าจอปิดการทำงานถูกโยกย้ายไปยังการแสดงผลที่เหลืออยู่

ซอฟต์แวร์ที่ใช้ความสว่าง

บนแล็ปท็อปคุณสามารถควบคุมความสว่างผ่านกราฟิกการ์ดที่ควบคุมหน้าจอ LCD ด้วยทีวีภายนอกและจอมอนิเตอร์คุณต้องการโซลูชันซอฟต์แวร์เพื่อลดความสว่างลงเหลือ 0 การหมุนให้เป็นศูนย์นั้นใกล้เคียงที่สุด

เวอร์ชั่นสั้น

จากบรรทัดคำสั่ง (ไม่มีสคริปต์) ใช้:

$ xrandr | grep " connected"
HDMI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 1107mm x 623mm
eDP-1-1 connected primary 1920x1080+3840+2160 (normal left inverted right x axis y axis) 382mm x 215mm
DP-1-1 connected 3840x2160+1920+0 (normal left inverted right x axis y axis) 1600mm x 900mm

xrandrแสดงให้เห็นว่าคุณรายชื่อจอภาพได้รับมอบหมายจาก ตอนนี้ถ้าคุณต้องการตั้งค่าDP-1-1ความสว่างให้ปิดการใช้งาน:

xrandr --output DP-1-1 --brightness 0

สคริปต์ทุบตีทีวีของ Sony

นี่เป็นหนึ่งในสามสคริปต์ที่ฉันเขียน:

#!/bin/bash

# NAME: sony
# PATH: /mnt/e/bin
# DESC: Set brightness of Sony TV
# DATE: Dec 9, 2017.

if [[ $# -ne 1 ]]; then
    xrandr --verbose | grep -A5 "^HDMI-0" > /tmp/sony
    head -n1 /tmp/sony
    echo "$(tput setaf 1)" ; tail -n1 /tmp/sony ; echo "$(tput sgr0)"
    rm /tmp/sony
    echo 'One argument required for brightness level, e.g. "sony .63"'
    echo 'will set brightness level of Sony TV to level .63 using xrandr'
    exit 1
fi

xrandr --output HDMI-0  --brightness "$1"

เพื่อปิดจอแสดงผลที่คุณจะใช้ sony 0

สคริปต์การโทรโดยไม่มีพารามิเตอร์

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

echo "$(tput setaf 1)" ; tail -n1 /tmp/sony ; echo "$(tput sgr0)"

หลังจากsetafเปลี่ยนเป็น1:

  • 2 สำหรับสีเขียว
  • 3 สำหรับส้ม
  • 4 สำหรับสีฟ้า ฯลฯ

การแก้ไขและการติดตั้งสคริปต์

เปลี่ยนสองรายการHDMI-0ให้ตรงกับชื่อหน้าจอของคุณ คุณสามารถดูรายการหน้าจอทั้งหมดที่พิมพ์xrandrอยู่ในเทอร์มินัล

วางสคริปต์ในไดเรกทอรีในเส้นทางของคุณเช่น:

/usr/local/bin/sony

ทำเครื่องหมายสคริปต์ว่าสามารถเรียกทำงานได้โดยใช้:

sudo chmod a+x /usr/local/bin/sony

การเลือกไดเรกทอรีใด: /usr/local/binvs~/bin

เมื่อคุณสร้างสคริปต์ใน/usr/local/binคุณต้องใช้sudoพลัง ทางเลือกที่ดีกว่าคือการใช้ไดเรกทอรี~/binที่จดชวเลขสำหรับ/home/YourUserID/bin:

  • สร้างไดเรกทอรี ~/bin
  • ปิดเทอร์มินัลของคุณแล้วเปิดใหม่
  • ไดเรกทอรีที่สร้างขึ้นใหม่นั้นอยู่ในเส้นทางของคุณแล้ว
  • สคริปต์ทั้งหมดที่คุณสร้างขึ้น~/binสามารถสร้างได้ด้วยสิทธิ์ปกติของคุณ
  • เพื่อเปิดใช้งานการเรียกใช้สคริปต์ของคุณคุณต้องใช้chmod +xมากกว่าchmod a+x( aหมายถึงผู้ใช้ทั้งหมด)

2
ขอบคุณสำหรับคำตอบ. ฉันไม่รู้xrandr [...] --brightnessตัวเลือก โปรดทราบว่าคุณได้พูดคุยเกี่ยวกับจอแสดงผลของ Sony โดยเฉพาะ แต่--brightnessควรใช้งานกับจอแสดงผลอื่นเช่นกัน ฉันทดสอบ--brightnessแล็ปท็อปแล้วและใช้งานได้ แต่--brightness 0ไม่ได้ปิดแสงไฟ ... -I've ยังผ่านการทดสอบ--brightnessบนคอมพิวเตอร์เดสก์ทอปของฉัน: น่าเสียดายที่หน้าจอ (s) เก็บไว้เป็นสีดำเท่านั้นสำหรับ 1 หรือ 2 วินาที หลังจากนั้น 1-2 วินาทีความสว่างจะถูกรีเซ็ตโดยอัตโนมัติ ฉันคิดว่ามันใช้งานได้หรือไม่ขึ้นอยู่กับการรวมกันของ gpu + ไดรเวอร์ + หน้าจอ
myrdd

1
@myrdd ฉันมีสคริปต์สามตัวคือsony , toshibaและalienสำหรับหน้าจอภายนอกสองจอและหน้าจอแล็ปท็อปในตัว ใช่แสงไฟไม่ปิดดังนั้นคุณจะไม่ได้รับ "สีดำบริสุทธิ์" แต่เป็นการทำงานใกล้ชิด การรีเซ็ตอัตโนมัติ 1 ถึง 2 วินาทีไม่มีผลต่อการแสดงผลใด ๆ ของฉัน แต่ฉันใช้ไดรเวอร์ nVidia สำหรับพอร์ต HDMI nVidia และฮาร์ดไดรฟ์ nVidia ที่ควบคุม Intel HD530 iGPU สองหน้าจอ - Thunderbolt3 และในตัว
WinEunuuchs2Unix

ไม่จำเป็นต้องใช้สคริปต์เพียงเรียกใช้ xrandr เพื่อค้นหา id ผลลัพธ์จากนั้นxrandr --output HDMI-1 --brightness 0โปรดลดความซับซ้อนของคำตอบ
brauliobo

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