Score:1

ลดความละเอียดของจอภาพที่เล็กที่สุดโดยอัตโนมัติเมื่อเชื่อมต่อจอภาพใหม่หรือไม่

ธง au

ฉันมีจอมอนิเตอร์และทีวีที่ฉันใช้เป็นบางครั้ง จอภาพเป็น 4k ใช้ที่ความละเอียด 2560x1440 - ยกเว้นเมื่อเชื่อมต่อทีวี ฉันต้องลดความละเอียดลงเป็น 1080 ด้วยตนเอง แล้วตั้งค่ากลับเป็น 1440 ด้วยตนเองหลังจากตัดการเชื่อมต่อทีวี

เอาต์พุต xrandr มีลักษณะดังนี้:

เชื่อมต่อ DVI-I-1 แล้ว (ปกติซ้ายกลับหัว แกน x ขวา แกน y)
   1920x1080 60.00 + 59.94 23.98 60.05 60.00  
   1440x480 60.05  
   1280x720 60.00 59.94  
   720x480 59.94  
   640x480 59.93  
HDMI-0 เชื่อมต่อหลัก 2560x1440+0+0 (ปกติ ซ้าย กลับ ขวา แกน x แกน y) 597 มม. x 336 มม.
   3840x2160 60.00 + 59.94 29.97 25.00 23.98  
   2560x1440 59.95* 
   2048x1280 60.00  
   1920x1080 60.00 59.94 50.00 25.00 23.98 60.00 50.04  
   1600x1200 60.00  
   1600x900 60.00  
   1280x1024 75.02 60.02  
   1280x720 59.94  
   1152x864 75.00  
   1024x768 75.03 60.00  
   800x600 75.00 60.32  
   720x576 50.00  
   720x480 59.94  
   640x480 75.00 59.94 59.93  
Jacob Vlijm avatar
by flag
กำหนดมากเกินไป โดยไม่ต้องเขียนสคริปต์? เลขที่
francois P avatar
it flag
ฉันคิดว่าคุณไม่สามารถทำได้หากไม่มีสคริปต์ จนกว่าการตรวจจับจะใช้ความละเอียดที่ดีที่สุดโดยอัตโนมัติสำหรับจอภาพทั้งหมดที่เสียบปลั๊ก
Slbox avatar
au flag
@JacobVlijm ยุติธรรมพอ - แก้ไขข้อความโพสต์! เปิดรับข้อเสนอแนะใด ๆ และทั้งหมด
Jacob Vlijm avatar
by flag
คุณอยู่บน X หรือ Wayland? ดูเหมือนว่า Kwin จะทำทั้งสองอย่าง
Slbox avatar
au flag
ใช้ "x" คุณช่วยอธิบายวิธีการบรรลุเป้าหมายนี้ด้วย 'kwin' ได้ไหม?
Jacob Vlijm avatar
by flag
ถูกต้อง. คุณสามารถโพสต์คำถามของคุณเกี่ยวกับผลลัพธ์ของ xrandr ได้หรือไม่? เราต้องการชื่อหน้าจอ นอกจากนี้โปรดแสดงผลโดยแนบ / จัดเรียงหน้าจอภายนอก
Slbox avatar
au flag
@JacobVlijm เสร็จแล้ว!
Jacob Vlijm avatar
by flag
... และมันก็เป็นเช่นนั้น คุณลองสคริปต์หรือไม่? ต้องการความช่วยเหลือหรือไม่?
Score:1
ธง by

เปลี่ยนความละเอียดของสัญญาณ

ด้วยความช่วยเหลือของ ดีเคเราสามารถดำเนินการกับหลายสัญญาณ 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 คำสั่งไปยังสคริปต์

Slbox avatar
au flag
ฉันยังไม่สามารถลองสิ่งนี้ได้ เนื่องจากปัญหาได้รับการแก้ไขแล้ว _partially_ โดย Plasma 5.23.1 และสิ่งนี้กลายเป็นเรื่องที่เร่งด่วนน้อยกว่ามากสำหรับฉัน ดูมีความหวัง! ฉันยอมรับคำตอบอย่างไม่แน่นอนจนกว่าจะมีโอกาสลองใช้งาน ขอบคุณมากสำหรับความช่วยเหลือของคุณ.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา