为什么我的lightdm.conf编辑不会影响我的桌面屏幕分辨率?


13

我想将桌面屏幕分辨率更改为1366x768。但是我VESA drivers(AMD REDWOOD)没有检测到该分辨率。所以我创建了一个shell脚本,如下所示:

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync  
xrandr --addmode DVI-0 1368x768_60.00  
xrandr --output DisplayPort-0 --off --output DVI-0 --mode 1368x768_60.00 --pos 0x0 --rotate normal --output HDMI-0 --off

我保存它作为lightdmxrandr.sh/usr/bin并使其可执行。然后,我将以下行添加到/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf(这与众所周知的等价/etc/lightdm/lightdm.conf。我使用上面的文件,就像在14.04上一样,那里没有/etc/lightdm/lightdm.conf。):-

greeter-session=unity-greeter  
display-setup-script=/usr/bin/lightdmxrandr.sh  
session-setup-script=/usr/bin/lightdmxrandr.sh

并保存。从理论上讲,这应该将登录屏幕分辨率和桌面屏幕分辨率都更改为1366x768。但是令人惊讶的是,这仅更改了登录屏幕的分辨率。桌面分辨率未更改。后来我将脚本添加到“启动”应用程序中,这改变了我的桌面分辨率。

所以我想知道为什么我对lightdm.conf文件(或50-ubuntu.conf文件)所做的编辑不影响我的桌面分辨率。这是必须在启动板中报告的某种错误,还是说lightdm中的编辑会影响桌面屏幕是错误的?

PS:-在我看来,这不仅限于Ubuntu 14.04。

Answers:


11

我尝试了类似的事情,经过一些调试后,我想我知道发生了什么。您的脚本可能运行,并且可能确实设置了正确的分辨率。但是,由于它是由登录管理器运行的,因此它会在Unity完成设置桌面环境之前运行,并且Unity会读取其自己的设置并将分辨率重置为您拥有的分辨率。因此,我认为发生的事情是:

  1. lightdm正确运行您的脚本
  2. 这将设置您所需的分辨率
  3. Unity启动,读取其设置并恢复为您拥有的默认分辨率
  4. 您的分辨率回到了以前的水平

现在,发生这种情况是因为VESA驱动程序不会自动检测到您所需的分辨率。这意味着,当您从Unity设置的“显示”部分更改分辨率时,您将为其提供分辨率,除非您运行xrandr命令。因此,下一次您重新启动时,它将被忽略,并且Unity会恢复为默认分辨率。

因此,您需要做的是使分辨率可用于Unity,然后将其设置为默认值并让它处理。为此,您必须首先将此行添加到/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

session-setup-script=/usr/bin/lightdmxrandr.sh

然后,确保/usr/bin/lightdmxrandr.sh如下所示:

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync  
xrandr --addmode DVI-0 1368x768_60.00  

请注意,我实际上并没有设置分辨率,只是使它可用。重新启动后,请登录。新的分辨率现在应该在“设置” =>“显示”中可用。如果是这样,请在此处选择它,然后注销并再次登录,并且应该正确设置分辨率。它现在应该在重新启动后仍然有效。


替代方法:

  1. 创建一个/etc/X11/xorg.conf列出所需分辨率文件。像这样:

    Section "Monitor"
        Identifier    "Monitor0"
        Modeline "1368x768_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    EndSection
    
    Section "Screen"
        Identifier     "Screen0"
        Device         "Card0"
        Monitor        "Monitor0"
        SubSection "Display"
            Modes       "1368x768_60.00"
        EndSubSection
    EndSection
    
    Section "Device"
        Identifier    "Card0"
        Driver        "vesa"
    EndSection
    
  2. 将运行xrandr命令的脚本添加到会话的启动应用程序。


在/usr/share/lightdm/lightdm.conf.d/下编辑文件是更改lightdm.conf的错误方法。LightDM项目页面显示系统管理员可以覆盖/etc/lightdm/lightdm.conf.d/或/etc/lightdm/lightdm.conf中的默认配置。您不应在/ usr / share / lightdm /下编辑文件。它可能会工作一段时间,可能会被软件包更新覆盖。来源:LightDM项目页面freedesktop.org/wiki/Software/LightDM 请更正您的答案
happyskeptic 2014年

3
我没有足够的声誉来添加简单的注释,但是我想指出,需要授予sh文件执行权限。OP提到他/她已经这样做了,但是terdon的回答并未在步骤中包括它。如果它不是可执行文件,那么您将必须下拉至命令提示符,因为它将无法登录(至少对我而言不是)。就我而言,这只是一个简单的疏忽,但以防万一其他人忽略了这一步骤,我想在这里重申这一点。
柯克·斯宾塞
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.