每次启动电脑时,最左边的显示器都会配置为最右边的显示器。我在显示设置中更改后,它就可以正常工作了。
但是,每当我重新启动 PC 时,它们都会恢复到错误配置。是否有一个文件可以编辑以强制它们采用特定配置?
答案1
在第二台显示器上进行显示器配置,如監視器,通常在重启后就不会被记住。
使用下面的脚本,您可以定义启动时哪个显示器应该是左侧显示器。它将在左/右设置中将两个显示器对齐。
所使用的命令是xrandr
将屏幕定位在两个屏幕的跨越区域中的命令(参见“注释”中的链接)。
启动时设置左/右显示器的脚本
由于要运行的命令取决于当前情况以及您实际想要在右侧/左侧显示哪个屏幕,因此您需要一个脚本来检查您的屏幕及其水平分辨率,创建正确的命令并在启动时自动设置所需的情况。
剧本
#!/usr/bin/env python3
import subprocess
import sys
left = sys.argv[1]
# get the data on screens and resolutions, parsed from xrandr
current = [l.split() for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()]
# find the name(s), x-res of the screen(s)
screens = [
(l[l.index("connected")-1], [s.split("x")[0] for s in l if s.count("+") == 2][0]) \
for l in current if "connected" in l
]
# set up screen positions from left to right (important)
if left == screens[0][0]:
subprocess.call(["xrandr", "--output", screens[0][0], "--pos", "0x0"])
subprocess.call(["xrandr", "--output", screens[1][0], "--pos", screens[0][1]+"x0"])
elif left == screens[1][0]:
subprocess.call(["xrandr", "--output", screens[1][0], "--pos", "0x0"])
subprocess.call(["xrandr", "--output", screens[0][0], "--pos", screens[1][1]+"x0"])
如何使用它
- 将脚本复制到一个空文件中,另存为
setup_monitors.py
- 打开终端窗口,运行命令
xrandr
- 在输出中,两行(如果已连接第二台显示器)将包含“已连接”屏幕的名称。名称看起来像:
DVI-I-1
或VGA-0
。请根据实际情况猜测一下您想要在左侧显示的是哪一个。 通过以下命令运行脚本(从终端):
python3 /path/to/setup_monitors.py <left_screen>
例如:
python3 /path/to/setup_monitors.py DVI-I-1
在两个屏幕上测试该命令。屏幕将黑一秒钟并进行配置。
如果一切正常,请向启动应用程序添加命令:选择 Dash > 启动应用程序 > 添加命令
/bin/bash -c "sleep 15 && python3 /path/to/setup_monitors.py DVI-I-1"
笔记
- 当涉及第二台显示器时,命令特别需要睡眠
xrandr
。如果脚本(实际上是其中的命令)运行得太早,桌面尚未完全加载,命令将中断或无法达到目标。 - 也可以看看这里有关脚本内部命令所执行操作的更多信息。
答案2
Jacob 的解决方案有效,但还有一些其他替代方案。您可以将命令放入文件xrandr
中.xsessionrc
,以便在启动时执行它们。您也可以只写一个xorg.conf
条目来明确设置显示器的左右两侧。我不在电脑旁,所以目前很遗憾没有提供详细信息,但如果有时间,我会稍后回来补充。与此同时,阅读有关这两个文件的信息对您来说也是值得的xrandr
;xorg.conf
无论如何,您可能会发现比我最终在此处提供的更好的解决方案。^_^
编辑:好的,我终于开始做这件事了。
使用xrandr
和~/.xsessionrc
该xrandr
实用程序用于获取和设置有关显示器的信息。xrandr
在命令行中输入它本身,您将获得所有显示器及其支持的“模式”的列表。以下是与旧戴尔 4:3 LCD 相对应的一些示例输出。
DP2 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0
1152x864 75.0
1024x768 75.1 60.0
800x600 75.0 60.3
640x480 75.0 60.0
720x400 70.1
如果您的显示器分辨率不正确等,您可以向这些添加模式,但您的问题在于定位。xrandr
提供简单的参数--left-of <output>
,--right-of <output>
让您可以决定显示器相对于彼此的位置。
假设您的显示器标识为FOO1
和FOO2
。(它们永远不会;这只是一个例子。)如果您希望FOO1
始终位于 的左侧FOO2
,您可以输入:
xrandr --output FOO1 --left-of FOO2
或者
xrandr --output FOO2 --right-of FOO1
在命令行中输入此命令将立即对当前会话进行更改。将同一行插入到文件中~/.xsessionrc
将使更改在每次启动 X 时生效。
使用xorg.conf
另一种方法是编写一个xorg.conf
条目,该条目将指示显示配置作为 X 启动过程的一部分。如果你使用的是 Ubuntu,那么这很可能是xorg.conf.d
目录,位于/usr/share/X11/xorg.conf.d
或/etc/X11/xorg.conf.d
。因此,如果您还没有配置文件,请创建一个配置文件来驱动您的显示适配器和显示器。我调用了我的配置文件01-monitors.conf
以确保它首先被执行。重复使用前面的示例,位于FOO1
的左侧FOO2
,我们可以在这里使用配置部分设置相同的首选项Monitor
。
Section "Monitor"
Identifier "FOO1"
Option "LeftOf" "FOO2"
EndSection
请注意 与Identifier
您从 获得的相同xrandr
。
进一步阅读
man
配置系统的页面xorg.conf
位于http://www.x.org/archive/X11R7.7/doc/man/man5/xorg.conf.5.xhtml