ฉันจะป้องกัน Xorg โดยใช้แผงหน้าจอแล็ปท็อปของ Linux ได้อย่างไร


12

ฉันมีแล็ปท็อป (~ HP อายุ 5 ปีที่ใช้คอมแพค nc6400 ที่ใช้ Fedora Linux) ซึ่งฉันใช้เวลาส่วนใหญ่เป็นเครื่องเดสก์ท็อป เสียบเข้ากับแท่นวางพร้อมฝาปิดและเชื่อมต่อผ่านสายเคเบิล DVI กับจอ LCD ภายนอกขนาดใหญ่

ด้วยเหตุผลหลายประการ (หน้าจอล็อกอินปรากฏขึ้นบนจอแสดงผลแบบปิดการ์ดกราฟิกที่ จำกัด ไม่สามารถทำ 3D ทั้งสองจอได้ในคราวเดียว) ฉันต้องการป้องกัน X จอแสดงผลแบบรวมของแล็ปท็อปที่ใช้งานโดย X ในขณะที่เชื่อมต่อและบนโต๊ะทำงาน (ซึ่งเป็นวิธีที่ฉันใช้งานประมาณ 97% ของเวลา) ฉันไม่ต้องการใช้แผงแล็ปท็อปในตัว การบูตไม่ได้เป็นปัญหาโดยเฉพาะตามค่าเริ่มต้นทุกอย่างจะถูกมิเรอร์ระหว่างสองจอแสดงผล นอกจากนี้ฉันไม่รังเกียจโซลูชัน 'ด้วยตนเอง' เช่นฉันต้องยกเลิกการตั้งค่าในโอกาสที่หายากเหล่านั้นเมื่อฉันใช้แล็ปท็อปห่างจากโต๊ะทำงาน

เมื่อเข้าสู่ระบบฉันสามารถกำหนดค่า Gnome เพื่อให้ใช้เฉพาะจอภาพภายนอกและแผงแล็ปท็อปถูกทำเครื่องหมาย "ปิด" แต่สิ่งนี้ไม่มีผลต่อสถานะการกำหนดค่าเริ่มต้นโดยอัตโนมัติของ X และจอแสดงผลก่อนเข้าสู่ระบบ น่าแปลกที่แล็ปท็อปไม่มีเซ็นเซอร์ฝาดังนั้นการเปิดหรือปิดฝาจึงไม่เกิดเหตุการณ์ใด ๆ ฉันสามารถใช้xrandr -display :0 --output LVDS1 --off --output DVI1 --autoกับ VC แยกต่างหากก่อนเข้าสู่ระบบ แต่สิ่งนี้ยังคงอยู่หลังจากความจริงของ X ที่เริ่มต้นและค้นพบและตัดสินใจใช้จอแสดงผลทั้งสอง

ฉันพยายามกำหนดค่า Xorg ด้วยการสร้างไฟล์/etc/X11/xorg.conf.d/01-turn-off-laptop-display.confที่มี:

Section "Monitor"
    Identifier  "laptop panel"
    Option  "Monitor-LVDS1" "laptop panel"
    Option  "Enable" "no"
EndSection
Section "Monitor"
    Identifier  "big display"
    Option  "Monitor-DVI1" "big display"
EndSection

Section "Screen"
    Identifier  "main"
    Device  "Default"
    Monitor "big display"
EndSection

อย่างไรก็ตามนั่นไม่ได้มีผลประโยชน์ การ์ดแสดงผลคือ Intel 945GM:

[dan@khorium ~]$ sudo lspci -v -s 0:2
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03) (prog-if 00 [VGA controller])
    Subsystem: Hewlett-Packard Company Device 30ad
    Flags: bus master, fast devsel, latency 0, IRQ 16
    Memory at f4600000 (32-bit, non-prefetchable) [size=512K]
    I/O ports at 4000 [size=8]
    Memory at e0000000 (32-bit, prefetchable) [size=256M]
    Memory at f4680000 (32-bit, non-prefetchable) [size=256K]
    Expansion ROM at <unassigned> [disabled]
    Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
    Capabilities: [d0] Power Management version 2
    Kernel driver in use: i915
    Kernel modules: i915

00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
    Subsystem: Hewlett-Packard Company Device 30ad
    Flags: bus master, fast devsel, latency 0
    Memory at f4700000 (32-bit, non-prefetchable) [size=512K]
    Capabilities: [d0] Power Management version 2

เครื่องใช้งาน Fedora Linux รุ่นต่างๆ (x86_64) ตั้งแต่ประมาณ 10/11) ฉันกำลังลองใช้ Fedora 15 รุ่นเบต้า (ซึ่งรวมถึง Gnome 3) แต่ปัญหามีอยู่ในระบบปฏิบัติการรุ่นก่อนหน้า


อ่าโอเค - ฉันไม่แน่ใจว่าเป็นสถานที่ที่ดีที่สุดที่จะถาม ฉันเข้าใจด้วยตัวแทน ของ 1 ฉันไม่สามารถย้ายคำถามระหว่างไซต์ SE ดังนั้นฉันต้องปล่อยให้คนอื่นทำหรือไม่
Norky

@Norky ฉันตั้งค่าสถานะคำถามสำหรับโมเดอเรเตอร์แล้ว
Let_Me_Be

@Let_Me_Be และ @Norky - คำถามนี้อยู่ในหัวข้อที่นี่เช่นกัน แต่ @Norky ถ้าคุณเองต้องการที่จะนำคำถามขึ้นบน Unix.SE แทนแล้วโปรด (และ @ ความคิดเห็นจะกลับมาดังนั้นฉันสามารถลบนี้) แต่อย่างอื่นไม่มีอะไรผิดปกติกับที่นี่

@ DMA57361 - ฉันไม่มีการตั้งค่าโดยเฉพาะอย่างยิ่งใดก็ตามที่คุณคิดว่าดีที่สุด :)
Norky

Ah, @Norky ประเด็นคือคุณสามารถใช้สิ่งที่คุณคิดว่าดีที่สุด - เป็นคำถามของคุณและใช้ได้อย่างสมบูรณ์ในทั้งสองไซต์คุณจะได้รับคำตอบจากชุมชนอื่น ดังนั้นหากคุณพอใจที่นี่เราจะทิ้งไว้ที่นี่ตอนนี้ อย่างไรก็ตามหากโพสต์ไม่ได้รับคำตอบในอนาคตอันใกล้นี้ @ ฉันจะกลับมาอีกครั้งและฉันจะเปลี่ยนให้คุณ

คำตอบ:


9

ฉันสามารถบรรลุเป้าหมายที่ต้องการด้วย xorg.conf ต่อไปนี้:

Section "Monitor"
        Identifier      "laptop panel"
        Option  "ignore"        "true"
EndSection
Section "Monitor"
        Identifier      "big display"
EndSection    
Section "Device"
        Identifier      "onboard"
        Option  "Monitor-LVDS1" "laptop panel"
        Option  "Monitor-DVI1" "big display"
EndSection

Option "Ignore" "true"ความเป็นองค์ประกอบที่สำคัญ ฉันอาจสามารถทำให้เรื่องนี้ง่ายขึ้นได้อีก ฉันยังไม่ทราบว่าจะเกิดอะไรขึ้นเมื่อ / ถ้าฉันใช้แล็ปท็อปอยู่ห่างจากจอแสดงผลภายนอก X อาจเป็นไปได้ว่ามีข้อผิดพลาด - ไม่ใช่โซลูชันที่สมบูรณ์แบบ แต่ฉันสามารถย้ายการกำหนดค่าออกไปได้ในเหตุการณ์นั้น


4

ฉันขอแนะนำวิธีที่แตกต่างกันเล็กน้อยซึ่งอาจมีความยืดหยุ่นมากกว่าสำหรับโอกาสที่หายากเหล่านั้นที่คุณต้องการใช้แล็ปท็อปเป็นแล็ปท็อป

ขึ้นอยู่กับเครื่องมือจัดการการแสดงผลของคุณ (อาจเป็น GDM, KDM หรือ LightDM) คุณสามารถเรียกใช้สคริปต์เมื่อตัวจัดการการแสดงผลเริ่ม คุณไม่จำเป็นต้องมีไฟล์ xorg.conf ที่แก้ไขเลย ตำแหน่งของสคริปต์มีดังนี้ (1):

  • KDM: / etc / kde / kdm / Xsetup (ที่ด้านล่าง)
  • SDDM: / etc / X11 / xdm / Xsetup (ที่ด้านล่าง)
  • XDM: / etc / X11 / xdm / Xsetup (ที่ด้านล่าง)
  • GDM: / etc / gdm / Init / Default - วางโค้ดสคริปต์ไว้เหนือบรรทัด "/ sbin / initctl" (1)
  • LightDM: /etc/lightdm/lightdm.conf - "display-setup-script =" ชี้ไปที่สคริปต์ทุกที่ที่คุณต้องการ ตรวจสอบให้แน่ใจว่าบรรทัดแรกของสคริปต์คือ#! / bin / shและสามารถเรียกใช้งานได้

สคริปต์สามารถเป็นเช่นนี้ คุณจะต้องเปลี่ยนชื่อจอภาพเป็นชื่อที่เหมาะสมกับเครื่องของคุณ ฉันพยายามที่จะเดาตาม xorg.conf ของคุณด้านบน

/usr/bin/xrandr --current | grep "DVI1 connected "
if [ $? -eq 0 ]; then
  echo "DVI found"
  sleep 1s 
  /usr/bin/xrandr --output LVDS1 --off
  /usr/bin/xrandr --output DVI1 --auto --primary
fi

วิธีนี้จะทดสอบว่าจอภาพ DVI ของคุณเชื่อมต่ออยู่หรือไม่และเปิดใช้งานแทนที่จะเป็นจอแสดงผลในตัว ฉันมีเวอร์ชันที่ซับซ้อนกว่านี้ซึ่งทำให้แท่นวางแล็ปท็อปของฉันทำงานได้ดี แต่ก็ยังใช้ได้สำหรับการใช้งานที่อื่น มันซับซ้อนกว่าสำหรับฉันเพราะฉันใช้ 5 หน้าจอในที่ทำงาน

(1) ข้อมูลตำแหน่งไฟล์บางส่วนจากhttp://forum.xfce.org/viewtopic.php?pid=25026#p25026


3

เวอร์ชันที่แก้ไขเล็กน้อยของ xorg.conf ของโพสต์ก่อนหน้า

Section "Monitor"
   Identifier "hdmi out"
   Option "ignore" "true"
EndSection

Section "Monitor"
   Identifier "big display"
EndSection

Section "Device"
   Identifier "onboard"
   Option "Monitor-LVDS1" "hdmi out"
   Option "Monitor-VGA1" "big display"
EndSection

ดูเหมือนว่าจะทำงานกับชิป intel NM10 กล่องมี vga out สำหรับ "จอแสดงผลขนาดใหญ่"


1

ถ้าคุณใช้Option "ignore" "true"ใน/etc/X11/xorg.confแล้วคุณจะไม่สามารถที่จะใช้การส่งออกที่มีxrandr(หรือเครื่องมือขึ้นอยู่) ที่ทั้งหมด การใช้การกำหนดค่านี้ฉันเพิ่งปิดใช้งานเอาต์พุต HDMI ของฉัน:

Section "Monitor"
        Identifier "My-DVI-D"
        Option "Primary" "true"
        Option "PreferredMode" "1920x1080x60.0"
EndSection

Section "Monitor"
        Identifier "My-HDMI"
        Option "Enable" "false"
        Option "RightOf" "My-DVI-D"
EndSection

Section "Device"
        Identifier "onboard"
        Option "Monitor-HDMI1" "My-DVI-D"
        Option "Monitor-HDMI2" "My-HDMI"
EndSection

โปรดทราบว่าจำเป็นต้องมีทุกบรรทัดการกำหนดค่าบรรทัดเดียวเพื่อเปิดใช้งาน DVI-D (ที่ความละเอียดเต็มรูปแบบ) และเพื่อปิดใช้งาน HDMI

เพื่อค้นหาผลลัพธ์ของคุณทำงานxrandr -qและปรับให้Option "Monitor-...สอดคล้อง ส่วน manpage ที่เกี่ยวข้องคือ:

   Option "Enable" "bool"
          This optional entry specifies whether the monitor should be turned on at  startup.   By  default,  the  server  will
          attempt to enable all connected monitors.  (RandR 1.2-supporting drivers only)
...
   Option "PreferredMode" "name"
          This optional entry specifies a mode to be marked as the preferred initial mode of the monitor.  (RandR 1.2-support‐
          ing drivers only)
...
   Option "Primary" "bool"
          This optional entry specifies that the monitor should be treated as the primary monitor. (RandR 1.2-supporting driv‐
          ers only)
...
   With RandR 1.2-enabled drivers, monitor sections may be tied to specific outputs of the video card.  Using the name of  the
   output  defined by the video driver plus the identifier of a monitor section, one associates a monitor section with an out‐
   put by adding an option to the Device section in the following format:

   Option "Monitor-outputname" "monitorsection"

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