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


如何使xrandr定制永久化?

, ,

问题描述

我曾经编辑过GDM的启动脚本(/etc /gdm /Init /Default)来永久改变我的显示分辨率。

如何在Ubuntu Oneiric中使用LigthDM执行此操作?

最佳解决方法

我想你可以将显示模式添加到/etc/X11/xorg.conf

如果您没有xorg.conf,则可以使用以下内容作为基础。您需要将名称为ModelineDriverModes的条目替换为系统的正确条目。根据您的硬件,您可能需要其他条目,例如,如果您的系统有多个图形芯片。

Section "Monitor"
    Identifier    "Monitor0"
    Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    Modeline "1024x768_60.00"   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    SubSection "Display"
        Modes       "1280x1024_60.00" "1024x768_60.00"
    EndSubSection
EndSection

Section "Device"
    Identifier    "Card0"
    Driver        "nvidia"
EndSection

如果您不知道系统正在使用的视频驱动程序的名称,那么您可能会得到如下名称(如果您有一个intel图形芯片,驱动程序名称只是”intel”):

lshw -class display | grep "driver"

可以使用cvt生成模型:

cvt <h-resolution> <v-resolution> [refresh]

次佳解决方法

修改/etc/lightdm/lightdm.conf以添加以下选项:

在登录屏幕出现之前调用mycustomloginvideo.sh

在用户桌面会话启动之前调用mycustomdesktopvideo.sh

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
# for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
display-setup-script=/usr/share/mycustomloginvideo.sh
# for your desktop session
session-setup-script=/usr/share/mycustomdesktopvideo.sh

您可以使用”arandr” gui工具生成上面的sh脚本,从当前会话的X配置中挑选参数。

确保您的shell脚本是可执行的:

chmod a+x /usr/share/mycustom*video.sh

并且您可以通过在终端中运行它来测试它是否有效(即您的xrandr命令中没有任何拼写错误或配置错误):

/usr/share/mycustomdesktopvideo.sh

如果登录脚本因任何原因无效,则您的计算机可能无法完成登录屏幕的引导过程。如果桌面脚本失败,则登录后可能无法访问桌面。如果要设置外部监视器,则断开连接后这些脚本将失败,并且X会话将无法启动。

第三种解决方法

有人发布了另一个解决方法,但我必须说它对我不起作用。它可能适合你。在我的情况下,它打破了统一,我只能移动我的鼠标光标。应用程序指示器顶部面板看起来是空的,但在拔下我的LCD后,我能够删除添加的行,一切都恢复正常。

编辑文件/usr/sbin/lightdm-session

以下是该文件的第一部分现在的样子:

#!/bin/sh
#
# LightDM wrapper to run around X sessions.

echo "Running X session wrapper"

# Load profile
for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do
  if [ -f  "$file" ]; then
     echo "Loading profile from $file";
     . "$file"
  fi
done

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

# Load resources

请注意,应更改Xrandr设置以匹配您的设置。

第四种方法

我一直试图解决类似的问题一段时间,并找到一个适合我的解决方案,所以希望它会有所帮助……

我有一个旧的向往一个AOA110,我已经打破屏幕太多次,买了一台新的笔记本电脑决定我会尝试把它变成一个HTPC但我的外部显示器是不被X识别所以我不得不’tweak’无数次使其以正确的分辨率工作。

这是我做的:

使用这个http://ubuntuforums.org/showthread.php?t=1112186教程直到第5步后,我能够在xrandr中找到一个可行且可接受的分辨率,但这不适用于LightDM登录屏幕。

不要按照上面的步骤使它坚持上面如何工作,但我认为这是在11.10中这样做的正确方法。我在ArchWiki https://wiki.archlinux.org/index.php/Xorg上发现了这篇文章,我根据自己的需要进行了调整。

首先在这里创建一个文件:/etc/X11/xorg.conf.d/10-monitor.conf

然后为您的显示添加适当的X详细信息,这是我的看法:

Section "ServerLayout"
Identifier     "DualSreen"
Screen       0 "Screen0"
Screen       1 "Screen1" RightOf "Screen0" #Screen1 at the right of Screen0
#Option         "Xinerama" "1" #To move windows between screens
EndSection

Section "Monitor"
Identifier     "LVDS1"
Option         "ignore" "true"
EndSection

Section "Monitor"
Identifier     "VGA1"
Option         "Enable" "true"
Modeline "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync
EndSection

Section "Device"
Identifier     "Device0"
Driver         "intel"
Screen         0
EndSection

Section "Device"
Identifier     "Device1"
Driver         "intel"
Screen         1
EndSection

Section "Screen"
Identifier     "Screen0"
Device         "Device0"
Monitor        "VGA1"
DefaultDepth    24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
    Modes          "1440x900_60.00"
EndSubSection
EndSection

Section "Screen"
Identifier     "Screen1"
Device         "Device1"
Monitor        "LVDS1"
DefaultDepth   24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
EndSubSection
EndSection

添加的重要位在适当的Section "Monitor"下,包括您在使用gtf 1440 900 60.00时找到的适当的Modeline,然后在相应的Section "Screen"下,包括正确的Modes

您会注意到我尝试做的不仅是将VGA1连接设置为合适的分辨率,还要告诉它不要使用我的LVDS1输出。显然,您需要适当调整您的产品,以匹配正确的输出数量以及适合您设置的设备,屏幕和显示部分。

对于史诗般的帖子感到抱歉,我一直在调整xorg.conf文件已经有一段时间了,我一直在使用Hannspree显示器和我之前使用的旧的xorg.conf设置11.10只是不能正常工作这就是唯一的解决方案我发现有效。

祝好运!

第五种方法

我上面的笔记本电脑遇到了类似的问题,我想在对话中添加一些东西。如果您不关心登录分辨率(我没有),但希望实际工作区是正确的分辨率,您可以将监视器信息添加到LightDM,但在登录之前不要打开全分辨率。

我刚刚在文件中为监视器添加了以下脚本:lighdmxrandr

xrandr --newmode "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync
xrandr --addmode VGA1 1440x900_60.00

然后我在/etc/lightdm/lightdm.conf中调用它

display-setup-script=/usr/bin/lightdmxrandr

一旦我登录,我可以在显示器中设置我的显示器,它工作,即使我re-log(曾经给我一个很大的丑陋的错误)。

第六种方法

作为Jon Roberts回答的增强,让我指定arandr在其sh脚本生成中不包括在当前会话中工作的所有参数。例如,主监视器(如果您使用双监视器配置),不包括每个监视器的刷新率和伽玛设置。我的会话脚本看起来像这样:

#!/bin/sh
xrandr --output LVDS --mode 1366x768 --pos 1600x432 --rotate normal --output HDMI-0 --off --output DVI-0 --off --output VGA-1 --mode 1600x1200 --rate 85 --pos 0x0 --rotate normal --primary
xrandr --output VGA-1 --gamma 0.8:0.7:0.55 

我在第一行手动添加了–rate和–primary选项,然后手动添加第二行并进行了伽马校正,因为每当您将监视器切换到主要时,显然xrandr gamma设置都会丢失。

我不知道在制作监视器主要时是否具有伽玛设置的特定行为是有意还是错误。

此外,会话shell脚本不是由lightdm调用,而是作为启动应用程序调用,因为似乎lightdm在为xrandr做好准备之前会调用脚本,并且会发生奇怪的事情。

第七种方法

我有一个问题,想要在我的新LXDE盒子上扩展显示(不是双克隆),找到了正确的命令,但无法使其永久化。

xrandr --output VGA-0 --right-of DVI-0

上述方法似乎都太难/不是正确的方法。

我最终发现了这个:http://www.sudo-juice.com/change-lxde-screen-resolution-ubuntu-lubuntu/

这是一种享受,但我使用gedit代替:

gksu gedit /etc/xdg/lxsession/LXDE/autostart

然后在开头添加@符号末尾的行:

@xrandr --output VGA-0 --right-of DVI-0

希望对sudo-juice有所帮助并感谢您。

PS注意xrandr命令--中的双-(在我的屏幕上没有太清楚地显示)。

第八种方法

创建一个新文档并为其命名,例如/home/yourusername/yourscriptname.sh输入

#!/bin/bash
xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
xrandr --addmode VGA1 1600x900_60.00
xrandr --output VGA1 --mode 1600x900_60.00
unity --replace

并将其保存在您的主文件夹中(这将分辨率设置为1600×900)

打开启动应用程序(或运行gnome-session-properties)并单击”ADD”。在命令行中输入名称并键入:

bash /home/yourusername/yourscriptname.sh

保存它,现在每次登录时都会运行脚本,因此您需要先注销才能使其生效。在终端中运行命令(例如bash /home/yourusername/yourscriptname.sh)也是检查脚本是否有效的好主意。

参考资料

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