我有一个 xrandr 命令,可以完全按照要求设置我的显示器(不同的比例来处理 Ubuntu 目前极其有限的 HDPI 支持):
xrandr --fb 7040x2160 --output DP1 --mode 1920x1080 --pos 0x0 --scale 2x2 --output eDP1 --mode 3200x1800 --pos 3840x180 --scale 1x1
如果我在登录后在终端中运行它,它会完美运行。它也可以运行通过启动应用程序正如这些答案所示:1,2, 和3(无需睡眠即可工作)。我得到的配置如下所示:
Screen 0: minimum 8 x 8, current 7040 x 2160, maximum 32767 x 32767
eDP1 connected primary 3200x1800+3840+180 (normal left inverted right x axis y axis) 294mm x 165mm
3200x1800 59.98*+ 47.99
2880x1620 60.00
2560x1440 60.00
2048x1536 60.00
1920x1440 60.00
1856x1392 60.01
1792x1344 60.01
2048x1152 60.00
1920x1200 59.95
1920x1080 60.00 59.93
1600x1200 60.00
1680x1050 59.95 59.88
1600x1024 60.17
1400x1050 59.98
1600x900 60.00
1280x1024 60.02
1440x900 59.89
1280x960 60.00
1368x768 60.00
1360x768 59.80 59.96
1152x864 60.00
1280x720 60.00
1024x768 60.00
1024x576 60.00
960x540 60.00
800x600 60.32 56.25
864x486 60.00
640x480 59.94
720x405 60.00
640x360 60.00
DP1 connected 3840x2160+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
1920x1080 60.00*+ 50.00 59.94
1920x1080i 60.00 50.00 59.94
1600x1200 60.00
1680x1050 59.88
1280x1024 75.02 60.02
1440x900 74.98 59.90
1280x960 60.00
1280x800 59.91
1152x864 75.00
1280x720 60.00 50.00 59.94
1024x768 75.03 70.07 60.00
832x624 74.55
800x600 72.19 75.00 60.32 56.25
720x576 50.00
720x480 60.00 59.94
640x480 75.00 72.81 66.67 60.00 59.94
720x400 70.08
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
如果我在启动过程中的任何地方运行完全相同的命令,我要么会得到乱码配置,其中我的帧缓冲区大小不正确(屏幕相互重叠),要么根本没有效果。我尝试过的地方是.xprofile
、lightdm
配置(使用display-setup-script
、greeter-setup-script
和调用session-setup-script
)。
我已经记录了命令的详细输出,它一直说设置了正确的值,但我的屏幕上的输出和xrandr
之后的查询显然表明并非如此。我该如何进一步配置我的屏幕(至少让欢迎界面正确显示)?鉴于 X 服务器在此之前就已初始化,有没有办法让配置命令xrandr
生效?
編輯註釋:现在的问题集中在问题的根源上“在之前配置监视器登录后“
答案1
我的猜测是,在登录过程中,Unity 会尝试自行设置屏幕,因此这可能是出现故障的原因之一。如果您的登录屏幕不需要配置,并且只需要 Unity 会话,您是否会考虑将该命令添加到启动应用程序中,以便它在您登录后自动运行。这样,Unity 会应用其更改,但随后您会用自己的命令覆盖它们。
我还建议您使用命令的修改版本:
bash -c 'sleep 3 && xrandr --fb 7040x2160 --output DP1 --mode 1920x1080 --pos 0x0 --scale 2x2 --output eDP1 --mode 3200x1800 --pos 3840x180 --scale 1x1'
这样,Unity 就有足够的延迟来应用其更改,然后你再运行自己的