问题描述
在奇怪的情况下,通常在错误地重新启动计算机后,我的登录屏幕分辨率不是默认的1440×900,但我认为1600×900。现在,我的显示器在处理它不能处理的分辨率方面非常糟糕,并且会在屏幕上显示一个愚蠢的”wrong resolution”盒子。
有什么方法可以让登录屏幕加载1440×900分辨率,无论如何?我用Unity和LightDM运行Ubuntu 11.10。
最佳解决办法
您可以为此创建一个脚本(源LightDM Resolution)。
-
首先,我们需要找出您的监视器标识符。打开终端,在统一短划线中键入
terminal
以查看选项或按Ctrl
+Alt
+T
-
输入/复制此命令以显示您的显示详细信息:
xrandr -q
如果您只有一台显示器,您将在输出中看到如下所示的一行(可能有一些不同的值,它们在我们开始时的标识符):
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
在这种情况下,屏幕标识符是DVI-0
-
打开你喜欢的文本编辑器,让我们在这个例子中使用gedit,按
Alt
+F2
并输入gedit
-
输入/复制到:
#!/bin/sh xrandr --output DVI-0 --primary --mode 1440x900
将其作为
lightdmxrandr.sh
保存在桌面上 -
您可能希望在我们将其付诸实践之前对其进行测试。回到终端导航到我们刚刚保存的地方:
cd ~/Desktop
现在我们需要让它可执行:
chmod a+rx lightdmxrandr.sh
现在运行它:
./lightdmxrandr.sh
(如果你登录后屏幕自动auto-corrects你可能不会看到差异所以你可能想要使用不同的测试分辨率,但你知道在测试时工作)
-
现在让我们移动我们制作的小脚本:
sudo mv ~/Desktop/lightdmxrandr.sh /usr/share/.
如果您不使用
sudo
,您可能会收到权限错误(我个人偏好使用此文件夹) -
我们现在需要在lightdm中运行它,导航到正确的文件夹:
cd /etc/lightdm
-
打开lightdm conf文件:
sudo gedit lightdm.conf
-
现在添加指令以在最后一行之后运行脚本并保存:
display-setup-script=/usr/share/lightdmxrandr.sh
现在重新启动,这应该在lightdm登录屏幕上设置正确的分辨率。
(这些说明可能看起来很长,但它们不需要很长时间)
次佳解决办法
我发现了一个非常简单的解决方法,对于我运行13.04非常有效。 (更新:现在13.10)在笔记本电脑上,外接屏幕未永久连接。
我只是从here复制
- log in
- use xrandr or the Displays control utility to configure your monitors how you’d like them to be configured in the login screen
- copy ~/.config/monitors.xml to /var/lib/lightdm/.config
由于我已经正确配置了我的显示器,我只需要执行第3步。
这里给出的其他一些答案对我有用,但仅限于特定场景,同时在其他情况下运行无法使用系统的风险(LOW GRAPHICS MODE ERROR)。例如,外部监视器永久连接(@captain_G接受回答)或始终连接到用于外部监视器的输出的同一设备(脚本由@Axlrod)。 @ MarcoV的答案似乎是最通用的解决方案,但它仍然涉及脚本规则。
第三种解决办法
你可以代替创建脚本,只需添加到文件/etc/lightdm/lightdm.conf
这样一行:
display-setup-script=xrandr --output default --mode 1280x720
在插入之前确保该命令有效,因为命令错误,lightdm将无法启动。
第四种办法
对于多显示器设置,您可能会断开笔记本电脑的连接而无需使用,这是一个简单的解决方案:
跑:
xrandr
让您使用笔记本电脑的设备通常是LVDS1,对我来说,我有一个DP2(显示端口2)它可能是HDMI1或其他任何东西,只需找到其旁边列出的分辨率的设备。
创建这个小bash文件:
#!/bin/bash
mode="$(xrandr -q|grep -A1 "DP2 connected"| tail -1 |awk '{ print $1 }')"
if [ -n "$mode" ]; then
xrandr --output LVDS1 --off
xrandr --output DP2 --primary --mode 2540x1440
fi
用笔记本电脑的显示器连接替换LVDS1。
用外接显示器连接更换DP2。
将bash脚本放在/usr /bin /local /中
chmod + x脚本
编辑/etc/lightdm/lightdm.conf
加
display-setup-script=/path/to/my/script
重启。
分辨率更改只会在您实际处于该显示时发生。
如果在同一个连接器上有多个具有不同显示器/分辨率的位置,则必须在bash脚本中添加更多智能。
第五种办法
稍微改进了上面的Axlrod’s script。
您需要做的就是指定哪个显示器使用主显示器,哪个是您的笔记本电脑显示器(LVDS)。
#!/bin/bash
LVDS="LVDS-0"
PRIMARY="VGA-0"
function get_displays()
{
xrandr -q | grep connected | awk '{print $1}'
}
function get_resolution()
{
[[ -z "$1" ]] && return 0 || xrandr -q | grep -A1 $1 | tail -1 | awk '{print $1}' | grep -e "^[0-9]"
}
for display in $(get_displays); do
resolution=`get_resolution $display`
[[ $display == $PRIMARY ]] && arg="--primary";
[[ -n $resolution ]] && mode="--mode $resolution";
if [[ $display == $LVDS ]]; then
xrandr --output $display --off
elif [[ -n $mode ]]; then
xrandr --output $display $arg $mode
fi
unset mode arg resolution;
done