Han*_*sky 18 xrandr resolution lightdm 12.04
我受到的BUG:https://bugs.launchpad.net/ubuntu/+source/unity-greeter/+bug/874241 否则,如果你像我一样有连接到更高的分辨率,第二显示器一台笔记本电脑LIGHTDM在登录阶段,在两个屏幕中镜像显示,并在我的情况下为它们分配一个通用分辨率(1024X768),而不是扩展桌面(主屏幕带有迎宾员,辅助屏幕只有一个徽标,如多显示器用户体验规范书中所述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)
Run Code Online (Sandbox Code Playgroud)
我试图强制 lightdm 执行一些 xrandr 命令,以便为每个显示器设置正确的分辨率并扩展桌面,所以我创建了一个名为/usr/share/lightdmxrand.sh的简单脚本:
#!/bin/sh
xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1
Run Code Online (Sandbox Code Playgroud)
并告诉 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
Run Code Online (Sandbox Code Playgroud)
重新启动 lightdm : sudo restart lightdm
统一欢迎登录屏幕是正确的。具有各自正确分辨率的屏幕,如果我将鼠标移到屏幕上,它会通过登录框和面板获得焦点,而未聚焦的屏幕仅显示 Ubuntu 徽标(正如 MM UX 规范书中所指定)。极好的!
只要外接显示器连接到笔记本电脑,此解决方法就可以很好地工作。在未连接的情况下,在登录阶段,我得到:低图形模式错误(您正在低图形模式下运行,您的屏幕,输入设备......没有被检测到......)。正常,因为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)
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我在下面管理了这个小基本脚本来回答我的问题。现在,无论是否连接外部显示器,Lightdm 都会在欢迎阶段使用正确的分辨率。然而,这个相同的脚本需要修改为通用的,这样用户就不需要手动指定其笔记本电脑和显示器屏幕的分辨率。
(Parse the output of `XRAND -q` command,
identify the connected devices,
grab their first/maximum resolutions
and use `XRANDR --output` to display them).
Run Code Online (Sandbox Code Playgroud)
所以如果有人有更好的解决方案或更通用的脚本,他就是那个人。
脚本:
#!/bin/bash
# V-1.0 by Hanynowsky - April 2012.
# I am a very basic script that works around bug 874241 repprted in launchpad.
XCOM0=`xrandr -q | grep 'HDMI1 connected'`
XCOM1=`xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1`
XCOM2=`xrandr --output LVDS1 --mode 1366x768`
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
else echo $XCOM2
fi
exit 0;
Run Code Online (Sandbox Code Playgroud)