如何使xrandr定制永久化?


Answers:


21

我认为您可以将显示模式添加到中/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]

我试过了,由于某种原因它无法启动。我使用了从cvt命令生成的modeline 和从另一个命令生成的驱动程序(也尝试vesa过),但是它只是挂起而没有任何错误消息。乔恩·罗伯茨(Jon Roberts)的解决方案非常适合我,并且与您在此处提到的显卡驱动程序之类的东西无关,对于新手来说,这很容易出错,因此,我投票赞成他的回答。
麦克

1
这似乎对--rotate这样的东西没有帮助。
Jherico

2
这个答案已经过时了。参见约翰·罗伯茨的回答
2013年

+1完美-o!使用带有Gnome 3.16的GDM,这使我的GDm可以识别1080p显示器。谢谢!
eduncan911

在我的计算机上,lshw输出i915,但是正确的驱动程序是intel
user202729

63

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

display-setup-script>在登录屏幕出现之前调用mycustomloginvideo.sh

session-setup-script>在用户桌面会话开始之前调用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会话将不会启动。


对于使用mdm的Mint 13 XFCE,请编辑/ etc / mdm / Init / Default。之前“退出0”打电话给你的脚本
StackUnder

Evnn在Fedora上工作...仅需要display-setup-script脚本,因为Xfce已由显示设置进行了设置,因此session-setup-script刚刚在登录屏幕上将我甩了下来。
Wilf 2014年

10

有人发布了另一种解决方法,尽管我必须说这对我不起作用。它可能为您工作。就我而言,这破坏了团结,我只能四处移动鼠标光标。应用程序指示器的顶部面板看起来是空的,但是拔下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设置以匹配您的设置。


对于旧机器上的lubuntu 17.x,此解决方案非常有效。它仅影响会话,因此,无法以所需的分辨率显示greeter登录屏幕。
laconbass

6

我已经尝试解决类似问题已有一段时间了,并且找到了一个对我有用的解决方案,因此希望它将对您有所帮助...

我有一个老旧的AOA110,我的屏幕坏了太多次了,在购买了一台新笔记本电脑之后,我决定将其变成HTPC,但是X不能识别我的外接显示器,所以我不得不对其进行多次“调整”,以使其以正确的分辨率工作。

这是我所做的:

在使用此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"包括Modeline使用时找到的适当位置,gtf 1440 900 60.00然后在相应的位置Section "Screen"包含正确的位置Modes

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

抱歉,这是史诗般的帖子,一段时间以来,我一直在使用我一直在使用的Hannspree显示器来调整xorg.conf文件,而我在11.10之前使用的旧xorg.conf设置再也无法正常工作了,这是我发现唯一可行的解​​决方案。

祝好运!


使用xrandr -q应为您提供有关正在使用的显示器以及可能的模式的正确信息。
faithinfriction 2011年

可以通过运行生成基本的配置文件Xorg :1 -configure,该文件将创建一个新的X服务器并从中生成一个配置文件-可以将其从复制/root/xorg.conf.new/etc/X11/xorg.conf。我发现上面的答案
Wilf 2014年

5

如上所述,我的笔记本电脑也遇到类似的问题,我想在对话中添加一些内容。如果您不关心登录分辨率(我不希望),但希望实际的工作区是正确的分辨率,则可以将监视器信息添加到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

登录后,即使在我重新登录后(用于给我带来一个严重的错误),也可以在“显示器”中设置我的显示器,并且该显示器可以工作。


这可以按需工作,但必须重新启动后才能重新登录...
CrandellWS

4

作为对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和奇怪的事情发生之前就调用了该脚本。


4

我的问题是希望在新的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命令中的双精度字符--(在我的屏幕上显示得不太清楚)。


2

创建一个新文件并命名,例如/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

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

打开启动应用程序(或运行gnome-session-properties,然后单击“添加”。输入名称并在命令行中输入:

bash /home/yourusername/yourscriptname.sh

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


这是由该答案的OP编辑(而不是删除),因为它是在此处而不是在此处发布的-我恢复了原始格式,因为这可能很有用,因为它应该在登录时恢复xrandr配置-bash脚本的内容应该可能已被用于获得正确配置的xrandr命令所取代。
Wilf 2014年

在我的双监视器显示器中,正在读取我的HDMI-0显示器的EDID,但没有读取我的DVI-0的EDID。指向存储在其中的配置脚本/usr/bin无效,但是使用gnome-session-properties成功将该脚本添加到我的启动应用程序中!
noobninja

1

根据上级的响应,我进行了一些测试,找到了一种对我有用的有用方法,然后我创建了一个简单的脚本,通过自动安装将其自动化。但这对其他任何情况都适用。

创建一个脚本installxrandrfixed.sh添加以下行:

#Variables for lightdm script and xrandr script to setup fixed resolution for old displays: 
xrandrscript=/usr/local/bin/xrandrscript.sh
lightdmstartscript=/usr/share/lightdm/lightdm.conf.d/60-xrandrscript.conf

 #Added old style configuration for lightdm: 
 sudo  ln -s /usr/share/lightdm/lightdm.conf.d /etc/lightdm/lightdm.conf.d
 #A fix to some old displays in high school at Fray Bentos, fix to 1024x768
 #Some useful information comes from: http://askubuntu.com/questions/63681/how-can-i-make-xrandr-customization-permanent
 sudo sh -c "echo '[SeatDefaults]' > $lightdmstartscript"
 # for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
 sudo sh -c "echo 'display-setup-script=$xrandrscript' >> $lightdmstartscript"
 # for your desktop session
 sudo sh -c "echo 'session-setup-script=$xrandrscript' >> $lightdmstartscript"
 sudo sh -c "echo 'xrandr --size 1024x768 --rate 60.0' > $xrandrscript"
 sudo chmod +x $xrandrscript

它将为lightdm显示和会话创建脚本和文件。不要忘记给它执行权限

chmod + x脚本installxrandrfixed.sh

并执行

./scriptinstallxrandrfixed.sh(您必须放置在文件所在的目录中。)

如果不在同一目录中:/path/to/script/scriptinstallxrandrfixed.sh

修改它以满足您的需求。亲切的问候。巴勃罗。

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.