当我重新启动 Ubuntu 22.04 VirtualBox 时,我必须再次设置屏幕分辨率。如何让分辨率保持不变?

当我重新启动 Ubuntu 22.04 VirtualBox 时,我必须再次设置屏幕分辨率。如何让分辨率保持不变?

我在 VirtualBox 系统上安装了带有 Gnome 的新 Ubuntu 22.04 服务器,每次重启时屏幕尺寸都会重置为 800x600(无论是在登录屏幕还是登录后)。

我将屏幕分辨率改为 1920x1600,效果很好。我可以连续几天使用该系统,没有任何问题。

但下次重启时,更大的分辨率就会丢失。它将被重置回 800x600。

难道我做错了什么?

注 1:我可以看到存在~/.config/monitors.xml并且定义正确:

<monitors version="2">
  <configuration>
    <logicalmonitor>
      <x>0</x>
      <y>0</y>
      <scale>2</scale>
      <primary>yes</primary>
      <monitor>
        <monitorspec>
          <connector>Virtual-1</connector>
          <vendor>unknown</vendor>
          <product>unknown</product>
          <serial>unknown</serial>
        </monitorspec>
        <mode>
          <width>1920</width>
          <height>1200</height>
          <rate>59.884601593017578</rate>
        </mode>
      </monitor>
    </logicalmonitor>
  </configuration>
</monitors>

注 2:如一些地方,我可以将monitors.xml文件复制到,/var/lib/gdm3/.config/.并且登录屏幕可以正常工作。但是一旦登录,该分辨率就会再次丢失。

sudo cp ~/.config/monitors.xml /var/lib/gdm3/.config/.

注 3:我有其他版本的 Ubuntu(18.04、20.04),具有类似的设置,并且分辨率保持得很好。

注4:我有一个“监视器”。


更新:

当我运行时xrandr --verbose,我会看到如下模式:

1920x1440 (0x53b) 233.500MHz -HSync +VSync *current +preferred
    h: width  1920 start 2064 end 2264 total 2608 skew    0 clock  89.53KHz
    v: height 1440 start 1443 end 1447 total 1493           clock  59.97Hz

我把它转换成如下脚本:

xrandr --newmode "1920x1440_59.97"   233.50  1920 2064 2264 2608  1440 1443 1447 1493 -hsync +vsync
xrandr --addmode XWAYLAND0 1920x1440_59.97
xrandr --output XWAYLAND0 --mode 1920x1440_59.97

但是第一个和最后一个xrandr会产生错误:

$ sh xrandr1.sh
X Error of failed request:  BadName (named color or font does not exist)
  Major opcode of failed request:  139 (RANDR)
  Minor opcode of failed request:  16 (RRCreateMode)
  Serial number of failed request:  20
  Current serial number in output stream:  20
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  139 (RANDR)
  Minor opcode of failed request:  7 (RRSetScreenSize)
  Serial number of failed request:  22
  Current serial number in output stream:  23

现在我看到有些人遇到了问题XWAYLAND0。也许这就是我遇到的问题...


/var/log/syslog 文件中找到一些日志:

Sep 15 23:31:47 ubuntu22 colord[2535]: failed to get edid data: EDID length is too small
Sep 15 23:31:47 ubuntu22 dbus-daemon[1214]: [system] Successfully activated service 'org.freedesktop.ColorManager'
Sep 15 23:31:47 ubuntu22 systemd[1]: Started Manage, Install and Generate Color Profiles.
Sep 15 23:31:47 ubuntu22 xbrlapi.desktop[2550]: openConnection: connect: No such file or directory
Sep 15 23:31:47 ubuntu22 xbrlapi.desktop[2550]: cannot connect to braille devices daemon brltty at :0
Sep 15 23:31:47 ubuntu22 /usr/libexec/gdm-wayland-session[2196]: dbus-daemon[2196]: [session uid=130 pid=2196] Successfully activated service 'org.gnome.ScreenSaver'
Sep 15 23:31:48 ubuntu22 gsd-color[2356]: failed to get edid: unable to get EDID for output
Sep 15 23:31:48 ubuntu22 gsd-color[2356]: unable to get EDID for xrandr-Virtual-1: unable to get EDID for output
Sep 17 01:10:40 ubuntu22 gnome-shell[2665]: XWAYLAND: mode 1024x600 is not available
Sep 17 01:16:20 ubuntu22 gnome-shell[2665]: message repeated 2 times: [ XWAYLAND: mode 1024x600 is not available]

最后一条似乎表明系统默认需要一个名为 Virtual-1 的显示器。不幸的是,我的显示器似乎被命名为 XWAYLAND0。

在这方面,我还发现了这些:

Sep 16 02:36:12 ubuntu22 gnome-shell[2303]: Registering session with GDM
Sep 16 02:36:12 ubuntu22 gnome-shell[1764]: Connection to xwayland lost
Sep 16 02:36:12 ubuntu22 gnome-session[1742]: gnome-session-binary[1742]: WARNING: Lost name on bus: org.gnome.SessionManager
Sep 16 02:36:12 ubuntu22 gnome-session-binary[1742]: WARNING: Lost name on bus: org.gnome.SessionManager

对于那个,我可以找到一个启动板上有错误

我试图关闭 Wayland,但没有帮助......

[daemon]
# Uncomment the line below to force the login screen to use Xorg
WaylandEnable=false

...重启后屏幕仍然显示错误的分辨率。不过,该xrandr命令现在有效。如果您想让它与 Wayland 配合使用,您可以使用gnome-randr.py脚本。请注意,我在更改后重新启动了WaylandEnable=false(我想这是不言而喻的)。

答案1

在“不优雅但有效”的修复类别中 -

我也遇到过这种情况,我的虚拟机是上网本的克隆版,屏幕尺寸很奇怪。我无法让虚拟机保留屏幕尺寸设置。所以我写了一个脚本来调整屏幕大小,并将该脚本添加到启动项中。

就我而言,脚本是

xrandr --newmode "1024x600_60.00"   49.00  1024 1072 1168 1312  600 603 613 624 -hsync +vsync
xrandr --addmode Virtual1 1024x600_60.00
xrandr --output Virtual1 --mode 1024x600_60.00

您的价值观可能会有所不同。

相关内容