当前位置: 首页>>技术教程>>正文


错误的登录屏幕分辨率

, ,

问题描述

在奇怪的情况下,通常在错误地重新启动计算机后,我的登录屏幕分辨率不是默认的1440×900,但我认为1600×900。现在,我的显示器在处理它不能处理的分辨率方面非常糟糕,并且会在屏幕上显示一个愚蠢的”wrong resolution”盒子。

有什么方法可以让登录屏幕加载1440×900分辨率,无论如何?我用Unity和LightDM运行Ubuntu 11.10。

最佳解决办法

您可以为此创建一个脚本(源LightDM Resolution)。

  1. 首先,我们需要找出您的监视器标识符。打开终端,在统一短划线中键入terminal以查看选项或按Ctrl + Alt + T

  2. 输入/复制此命令以显示您的显示详细信息:

    xrandr -q
    

    如果您只有一台显示器,您将在输出中看到如下所示的一行(可能有一些不同的值,它们在我们开始时的标识符):

    DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
    

    在这种情况下,屏幕标识符是DVI-0

  3. 打开你喜欢的文本编辑器,让我们在这个例子中使用gedit,按Alt + F2并输入gedit

  4. 输入/复制到:

    #!/bin/sh
    xrandr --output DVI-0 --primary --mode 1440x900
    

    将其作为lightdmxrandr.sh保存在桌面上

  5. 您可能希望在我们将其付诸实践之前对其进行测试。回到终端导航到我们刚刚保存的地方:

    cd ~/Desktop
    

    现在我们需要让它可执行:

    chmod a+rx lightdmxrandr.sh
    

    现在运行它:

    ./lightdmxrandr.sh
    

    (如果你登录后屏幕自动auto-corrects你可能不会看到差异所以你可能想要使用不同的测试分辨率,但你知道在测试时工作)

  6. 现在让我们移动我们制作的小脚本:

    sudo mv ~/Desktop/lightdmxrandr.sh /usr/share/.
    

    如果您不使用sudo,您可能会收到权限错误(我个人偏好使用此文件夹)

  7. 我们现在需要在lightdm中运行它,导航到正确的文件夹:

    cd /etc/lightdm
    
  8. 打开lightdm conf文件:

    sudo gedit lightdm.conf
    
  9. 现在添加指令以在最后一行之后运行脚本并保存:

    display-setup-script=/usr/share/lightdmxrandr.sh
    

现在重新启动,这应该在lightdm登录屏幕上设置正确的分辨率。

(这些说明可能看起来很长,但它们不需要很长时间)

次佳解决办法

我发现了一个非常简单的解决方法,对于我运行13.04非常有效。 (更新:现在13.10)在笔记本电脑上,外接屏幕未永久连接。

我只是从here复制

  1. log in
  2. use xrandr or the Displays control utility to configure your monitors how you’d like them to be configured in the login screen
  3. 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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2037.html,未经允许,请勿转载。