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

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

我想将我的桌面屏幕分辨率更改为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 特有的。

答案1

我尝试了类似的事情,经过一些调试后,我想我明白了发生了什么。你的脚本可能运行,并且可能确实正确设置了分辨率。但是,由于它是由登录管理器运行的,因此它在 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到会话的启动应用程序中。

相关内容