0

我目前正在研究在 Docker 容器中运行桌面环境(XFCE4)的可能性。目的是为 VHDL 创建一个独立的开发环境,便于学生安装和设置。

我的 XFCE4 映像基于 X11docker dockerfiles,到目前为止它在单窗口模式下工作。我想要实现的是能够使用这个具有多个由 vcxsrv 创建的屏幕的容器。X 服务器的运行可以由用户完成,因为它取决于个人偏好和屏幕数量。我想知道如何启动 XFCE4 并让它自动生成一个跨越所有屏幕的虚拟桌面并将其划分。

我的猜测是使用 xrandr 和 Arandr 来实现这一点,但不知何故,我的容器无法识别 X 显示器上的多个屏幕。尽管我在容器中所做的一切实际上都镜像到了所有屏幕。

我正在使用以下命令启动 X 服务器:

.\vcxsrv.exe -wgl -keyhook +xinerama -ac -screen 0 @1 -screen 1 @2 -screen 2 @3 -screen 3 @4

这是我从 xrandr 得到的输出:

root@docker-desktop:/# xrandr --listactivemonitors
Monitors: 1
 0: +*default 1920/503x1017/264+0+0  default
root@docker-desktop:/# xrandr --listmonitors
Monitors: 1
 0: +*default 1920/503x1017/264+0+0  default
root@docker-desktop:/# xrandr --prop        
Screen 0: minimum 0 x 0, current 1920 x 1017, maximum 32767 x 32767
default connected primary 1920x1017+0+0 503mm x 264mm
    non-desktop: 0 
        supported: 0, 1
   1920x1017      0.00* 

我的 Dockerfile:

FROM debian:buster

RUN apt-get update && apt-mark hold iptables && \
    env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      dbus-x11 \
      xdg-utils \
      x11-utils \
    && env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      gtk2-engines-xfce \
      gtk3-engines-xfce \
      libxfce4ui-utils \
      thunar \
      xfce4-session \
      xfce4-settings \
      xfdesktop4 \
      xfwm4 \
      xfce4-terminal \
      arandr \
    && env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      libgtk-3-bin \
      mousepad \
    && env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      libxv1 \
    && sed -i 's%<property name="ThemeName" type="string" value="Xfce"/>%<property name="ThemeName" type="string" value="Raleigh"/>%' /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml \
    && env DEBIAN_FRONTEND=noninteractive apt-get remove -y --no-install-recommends xdg-utils

CMD ["startxfce4"]

据我了解,vcxsrv 创建了一个 X 显示。X 显示器可以包含多个屏幕。为什么我的 Docker 容器中的软件无法识别显示中的其他屏幕?我错过了什么?

4

0 回答 0