เปลี่ยนความละเอียดของสัญญาณ
ด้วยความช่วยเหลือของ ดีเคเราสามารถดำเนินการกับหลายสัญญาณ a.o. ในการเชื่อมต่อ/ตัดการเชื่อมต่อจอภาพ หากเราเชื่อมต่อทั้ง เพิ่มจอภาพ
และ ลบจอภาพแล้ว
-สัญญาณ (Gdk.Display) เพื่ออัปเดตความละเอียดของจอภาพโดยอัตโนมัติ ขึ้นอยู่กับทีวีที่ติดตั้ง เสร็จแล้ว
ในสคริปต์
#!/usr/bin/env python3
นำเข้า GI
gi.require_version("Gdk", "3.0")
gi.require_version("Gtk", "3.0")
จาก gi.repository นำเข้า Gtk, Gdk
นำเข้ากระบวนการย่อย
triggermon = "DVI-I-1" # หากเชื่อมต่ออยู่ ให้ลดความละเอียดลง
เพื่อเปลี่ยน = "HDMI-0" # เปิดจอภาพให้ความละเอียดต่ำลง
lowres = "1920x1080" # ความละเอียดต่ำ
highres = "3840x2160" # ความละเอียดเริ่มต้น
คลาส WatchOut:
def __init__(ตัวเอง):
self.gdkdsp = Gdk.Display.get_default()
# ใช้สัญญาณเชื่อมต่อ / ตัดการเชื่อมต่อ
self.gdkdsp.connect("monitor_added", self.act_onchange)
self.gdkdsp.connect("monitor_removed", self.act_onchange)
# ตรวจสอบให้แน่ใจว่าการกำหนดค่าเริ่มต้นถูกต้อง
self.act_onchange()
# เราต้องการเธรด gtk เพื่อใช้สัญญาณ
Gtk.main()
def act_onchange(ตัวเอง, *args):
# เรามาเริ่มกันที่ความสูงกันเถอะ
curr_res = สูง
# รับ n-monitors ที่แนบมาลดความละเอียดหากเชื่อมต่อทริกเกอร์มอน
n_mons = self.gdkdsp.get_n_monitors()
สำหรับ n ใน [n สำหรับ n ในช่วง (self.gdkdsp.get_n_monitors())]:
mon_name = self.gdkdsp.get_monitor(n).get_model()
ถ้า mon_name == triggermon:
curr_res = ต่ำ
#ตั้งค่าความละเอียด
กระบวนการย่อย Popen([
"xrandr", "--output", tochange, "--mode", curr_res
])
ระวัง()
ติดตั้ง
คัดลอกสคริปต์ลงในไฟล์ว่าง บันทึกเป็น actonmonitor.py
และ ทำให้มันปฏิบัติการได้ (ถ้าคุณเรียกใช้โดยไม่เรียกล่ามอย่างชัดเจน)
ชื่อมอนิเตอร์อยู่ในส่วนหัวของสคริปต์ ดังนั้น ความละเอียดที่คุณกล่าวถึง ให้เปลี่ยนหากจำเป็น
ทดสอบรันในหน้าต่างเทอร์มินัล
/path/to/actonmonitor.py
ดูว่าทุกอย่างทำงานได้ตามที่ควรหรือไม่
เพิ่มลงในแอปพลิเคชันเริ่มต้นของคุณหากต้องการ
NB
ตำแหน่งที่แน่นอนของจอภาพรองในเค้าโครงจอภาพไม่ได้อยู่ในเอาต์พุต (ของคุณ) ของ xrandrหากตำแหน่งมีความสำคัญ คุณอาจต้องเพิ่มอีก xrandr
คำสั่งไปยังสคริปต์