为什么我的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 

我将它保存为/usr/bin lightdmxrandr.sh并使其可执行。 然后我/etc/lightdm/lightdm.conf添加到/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登录屏幕分辨率和桌面屏幕分辨率都更改为1366x768 。 但令人惊讶的是,这只改变了登录屏幕分辨率。 桌面分辨率未更改。 后来我将脚本添加到启动应用程序,这改变了我的桌面分辨率。

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

PS: – 在我看来,这不仅仅是针对Ubuntu 14.04的。

我尝试了类似的事情,经过一些调试后我想我发现了什么。 您的脚本可能运行,可能确实正确设置了分辨率。 但是,由于它是由登录管理器运行的,因此它在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 

请注意,我实际上并未设置分辨率,只是使其可用。 完成此重新启动后,然后登录。现在,新的分辨率应该可以在Settings => Displays中使用。 如果是这样,请在那里选择,注销并重新登录,并且应该正确设置分辨率。现在应该在重新启动后保持不变。


替代方法:

  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命令的脚本添加到会话的启动应用程序中。