ฉันได้รับผลกระทบจาก BUG: https://bugs.launchpad.net/ubuntu/+source/unity-greeter/+bug/874241 ไม่เช่นนั้นถ้าฉันมีแล็ปท็อปที่เชื่อมต่อกับจอภาพที่สองที่มีความละเอียดสูงกว่าLIGHTDMที่ ขั้นตอนการเข้าสู่ระบบสะท้อนการแสดงผลในหน้าจอทั้งสองและกำหนดความละเอียดทั่วไป (1024X768) ให้กับพวกเขาแทนที่จะขยายเดสก์ท็อป (หน้าจอหลักที่มีหน้าจอกว้างและรองด้วยโลโก้ตามที่กล่าวไว้ในหนังสือข้อกำหนดหลายจอภาพ UX สำหรับ 12.04)
นี่คือxrandrของฉัน-q
@L502X:~$ xrandr -q
Screen 0: minimum 320 x 200, current 1920 x 1848, maximum 8192 x 8192
LVDS1 connected 1366x768+309+1080 (normal left inverted right x axis y axis) 344mm x 193mm
1366x768 60.0*+
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm
1920x1080 60.0*+
1600x1200 60.0
1680x1050 60.0
1280x1024 60.0
1440x900 59.9
1280x960 60.0
1280x800 59.8
1024x768 60.0
800x600 60.3 56.2
640x480 60.0
DP1 disconnected (normal left inverted right x axis y axis)
ฉันพยายามบังคับให้ lightdm รันคำสั่ง xrandr บางคำสั่งเพื่อตั้งค่าความละเอียดที่เหมาะสมสำหรับแต่ละจอภาพและขยายเดสก์ท็อปดังนั้นฉันจึงสร้างสคริปต์ง่าย ๆ ชื่อ/usr/share/lightdmxrand.sh :
#!/bin/sh
xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1
และบอกให้ lightdm เรียกใช้: /etc/lightdm/lightdm.conf
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-setup-script=/usr/bin/numlockx on
display-setup-script=/usr/share/lightdmxrandr.sh
รีสตาร์ท lightdm: sudo restart lightdm
และหน้าจอเข้าสู่ระบบ greeter unity นั้นถูกต้อง หน้าจอที่มีความละเอียดที่ถูกต้องและถ้าฉันเลื่อนเมาส์ไปที่หน้าจอจะได้รับการโฟกัสด้วยกล่องเข้าสู่ระบบและพาเนลในขณะที่หน้าจอที่ไม่มีการโฟกัสจะแสดงโลโก้ Ubuntu (เช่นเดียวกับที่ระบุในหนังสือ MM UX spec) Fantastic!
วิธีแก้ปัญหานี้ใช้งานได้ดีตราบใดที่จอภาพภายนอกเชื่อมต่อกับแล็ปท็อป ในสถานการณ์ที่ไม่ได้เชื่อมต่อในขั้นตอนการเข้าสู่ระบบฉันได้รับ: ข้อผิดพลาดโหมดกราฟิกต่ำ (คุณกำลังทำงานในโหมดกราฟิกต่ำ, หน้าจอ, อุปกรณ์อินพุตของคุณ ... ไม่ได้รับการตรวจพบ .. ) ปกติเนื่องจากxrandr
พยายามส่งออกไปยังจอภาพที่ไม่ได้เชื่อมต่อ
คำถามที่นี่คือวิธีที่ผมควรแก้ไขสคริปต์ในทางที่เมื่อจอภาพภายนอกไม่ได้เชื่อมต่อxrandr
เอาท์พุทเพียงไปที่หน้าจอแล็ปท็อปและละเว้นจอภาพภายนอกใด ๆ เช่น:
If (xrandr -q | grep 'HDMI1 connected') != NULL (HDMI1 is connected )
then xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1
else xrandr --output LVDS1 --mode 1366x768 (or do nothing - because the resolution of the laptop screen is correct when no external monitor is connected)
ขอบคุณล่วงหน้า.