错误的登录屏幕分辨率

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

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

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

  1. 首先,我们需要找出您的监视器标识符。 打开终端,在Unity统一短划线中键入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保存在桌面lightdmxrandr.sh

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

     cd ~/Desktop 

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

     chmod a+rx lightdmxrandr.sh 

    现在运行它:

     ./lightdmxrandr.sh 

    (如果您的屏幕在登录后自动进行自动更正,您可能不会看到差异,因此您可能希望使用不同的测试分辨率,但您知道在测试时有效)

  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)在笔记本电脑上,外接屏幕未永久连接。

我只是从这里复制一下

  1. 登录
  2. 使用xrandr或Displays控件实用程序来配置监视器在登录屏幕中如何配置它们的方式
  3. 将〜/ .config / monitors.xml复制到/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脚本 。

您需要做的就是指定哪个显示器使用主显示器,哪个是您的笔记本电脑显示器(LVDS)。

 #!/斌/庆典
 LVDS = “LVDS-0”
 PRIMARY = “VGA-0”

 function get_displays()
 {
         xrandr -q |  grep连接|  awk'{print $ 1}'
 }

 function get_resolution()
 {
         [[-z“$ 1”]] &&返回0 ||  xrandr -q |  grep -A1 $ 1 | 尾巴-1 |  awk'{print $ 1}'|  grep -e“^ [0-9]”
 }

在$(get_displays)中显示; 做
         resolution =`get_resolution $ display`

         [[$ display == $ PRIMARY]] && arg =“ -  primary”;
         [[-n $ resolution]] && mode =“ -  mode $ resolution”;

         if [[$ display == $ LVDS]]; 然后
                 xrandr --output $ display --off
         elif [[-n $ mode]]; 然后
                 xrandr --output $ display $ arg $ mode
        科幻
        未设置模式arg解析;
 DONE
 sudo gedit /usr/share/X11/xorg.conf.d/52-myres.conf 

然后在文件中:

 Section "Monitor" Identifier "VGA1" Option "PreferredMode" "1152x864" EndSection 

保存并退出。 这些值是从命令xrandr -q获得的。 VGA1是我的连接器的名称, 1152x864是分辨率的名称。

这适用于Xubuntu 16.04。 它设置了一个首选分辨率,对我来说,它让我设置登录屏幕的分辨率,而不是默认为支持的最高分辨率。

从这里的答案修改

我发现有用的是Ubuntu指南网站上的post。 我在Ubuntu 11.10中尝试了很多东西,甚至尝试使用GNOME Classic。 分辨率总是1024×768,当我手动将其设置为1440×900时,它是“虚拟”,我的意思是我必须用鼠标滚动才能探索超出真实屏幕尺寸的整个桌面。

在终端我运行了这个命令:

 sudo gedit /etc/default/grub 

文本编辑器可能需要一段时间才能加载。 加载后,我编辑了这一行

 GRUB_GFXMODE=1024x768 

并将其更改为:

 GRUB_GFXMODE=1440x900 

请记住运行update-grub以应用更改。

之后我尝试重新安装VESA驱动程序(在这台计算机上我有一台GeForce 260 GTX)。 我知道更好的方法是使用Nvidia官方驱动程序,但使用它们的问题总是一样的……当然,我认为,现在性能会更差。

因此,检查Nvidia X服务器设置面板我确认我的分辨率已添加,并切换到它,它使屏幕看起来正确。 实际上我使用的是Ubuntu 11.10但是在GNOME Classic中。

我是Linux的新手,所以希望我写的不错。

不要使用可能导致登录屏幕无法使用的脚本或配置文件!

而是登录并设置首选屏幕设置*,然后运行以下命令:

 sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml 

您的登录解析现在将始终反映您当前登录的用户的设置。

*别忘了点击“申请”

Axelrod的剧本有些缺陷,因为’连接’的grep也抓住了所有’断开’的显示……不是我们想要的……

而且,使用带有awk和tail等的grep ……浪费迂回,我建议如下。 另外,在get_resolution中,我们将返回代码更改为1,因为返回代码零通常表示缺少错误,因此如果第一个参数不存在则使用1。

总之,通过将脚本的主要部分实例化为函数,如果需要在函数库中以及获取局部变量的使用,则可以在任何其他时间获取并执行该函数,而不需要取消设置。

 function get_displays() { xrandr -q | awk '($2 == "connected") {print $1;}' }; # the "\" and c/r were added for readability on this website # I do not have them in my code variant that I use. function get_resolution() { [[ -z "$1" ]] && return 1; xrandr -q | \ awk -v display="$1" '($1 == display && $2 == "connected") {getline; print $1;}'; }; function setup_displays() { local primary=${2:-"VGA-0"}; local lvds=${3:-"LVDS-0"}; for display in $(get_displays); do local resolution=${1:-"$(get_resolution $display)"}; [[ $display == $primary ]] && local arg="--primary"; [[ -n $resolution ]] && local mode="--mode $resolution"; if [[ $display == $lvds ]]; then xrandr --output $display --off; elif [[ -n $mode ]]; then xrandr --output $display $arg $mode; fi; done; }; setup_displays; 

这就是我在Xubuntu 16.04中使用它的方法。

您需要获得所需分辨率的字符串。 这是在命令的结果范围内:

 xrandr --verbose 

现在选择您想要的分辨率的部分。 它看起来像:

 1152x864 (0xa6) 108.000MHz +HSync +VSync h: width 1152 start 1216 end 1344 total 1600 skew 0 clock 67.50KHz v: height 864 start 865 end 868 total 900 clock 75.00Hz 

从上面的数据,你应该得到字符串108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync

要查找输出的名称,请找到类似的行:

 VGA1 connected 1152x864+0+0 (0xa4) normal (normal left inverted right x axis y axis) 306mm x 230mm 

这里我的输出名为VGA1

现在创建脚本:

 sudo gedit /usr/share/lightdmxrandr.sh 

然后在文件中写下以下内容:

 #!/bin/sh xrandr --newmode "1152x864_75.00" 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync xrandr --addmode VGA1 "1152x864_75.00" xrandr --output VGA1 --mode 1152x864_75.00 --pos 0x0 --rotate normal 

保存并关闭文件。 使脚本可执行:

 sudo chmod a+rx /usr/share/lightdmxrandr.sh 

创建配置文件以调用刚刚创建的脚本。

 sudo gedit /etc/lightdm/lightdm.conf.d/00-myres.conf 

在这个文件里面输入:

 [Seat:*] display-setup-script=/usr/share/lightdmxrandr.sh 

保存并关闭文件。 重启并希望您选择的解决方案将在您的登录名下。

实际上,这是对我有用的唯一方法,即使重新创建现有分辨率不合逻辑。

从这个问题修改的答案。

注意

获得长分辨率字符串的另一种方法是程序cvt 。 要获得分辨率为1152×864的字符串,刷新率为75.00:

 cvt 1152 864 75 

这给了我一个与我的桌面分辨率略有不同的分辨率,这也是我在主答案中没有包含该方法的原因。

如果您正在使用LightDM的GTK欢迎程序,那么您可以运行xrandr -q来查找监视器的名称,然后编辑/etc/lightdm/lightdm-gtk-greeter并按照该文件中的注释中所述设置属性active-monitor 。 此属性可以采用多个有序值,包括当前显示鼠标光标的监视器的#cursor

我喜欢附加我的脚本,将显示器配置到键盘上的一个我不使用的多媒体键。 目前我有一个标有’windows media center’的按钮强制我的显示器进入他们的首选配置。 这样一来,如果你是盲目飞行并且你的显示器没有同步到所需的分辨率,只需将热键混合并且所有都是固定的。

“首选屏幕模式”可能是问题所在

我假设你的显示器报告高屏幕分辨率是首选。 现在,您要覆盖此默认首选项 。 有关如何完成此操作的详细信息,请参阅我对非常相似问题的回答 。

我遇到了相反的问题:我的屏幕分辨率(1280×1024)低于我想要的(1600×1200)。 我发现的修复(并在链接的答案中描述)有望适用于您的问题。

我在2014年中期(11,1)运行Xenial的MacBook Pro上遇到了同样的问题。 我已经尝试了各种forms的所有上述解决方案,但总是让X进入故障安全低图形模式(但显示在我希望它设置为默认值的分辨率中。

经过对论坛的争论和谷歌搜索,结果发现我忘记了最简单和默认的潜在解决方案:nomodeset。 这解决了问题。

TL; DR:别忘了试试nomodeset! ESP。 在MacbookPro 11,1上。

我已创建此脚本以使其更具动态性(多个工作区/不同的监视器)。

只有烦恼:当您从lightdm登录时,屏幕仍然闪烁,就像它想要改变分辨率:s