启动时启动多个 X 显示

启动时启动多个 X 显示

我正在运行一台带有七个显示器和两个 GPU 的机器。每个显示器运行一个独立的全屏应用程序,不需要 X 输入(没有鼠标,没有键盘),甚至不需要桌面环境。

我如何创建一个 systemd 服务:

  • 创建连接到特定监视器的 X 显示
  • 在此 X 显示器上运行全屏应用程序
  • 在此 X 显示器上运行 VNC 服务器(指定端口)

我打算为七个监视器中的每一个创建其中一项服务。


更新:我越来越接近了。我现在可以为每个显示器运行 Windows 和 VNC。我仍然无法让它自动运行,并且也无法思考如何将一个脚本拆分为多个服务。

首先,我使用在单独的屏幕上为每个监视器nvidia-settings生成一个。xorg.conf然后启动进入无头环境:

sudo mv xorg.conf /etc/X11/xorg.conf
sudo systemctl mask gdm
sudo reboot

我创建一个脚本:

#!/bin/bash
DISPLAY=0.0 cvlc video1.mp4 & 
DISPLAY=0.1 cvlc video2.mp4 &

x11vnc -display :0.0 &
x11vnc -display :0.1

我从 tty2 运行:

$ xinit /path/to/script

这将在监视器 1 上播放视频 1,在监视器 2 上播放视频 2。然后我可以使用端口 5900 和 5901 通过 VNC 连接到两台显示器。

如果我尝试将其作为服务运行:

[Service]
ExecStart=xinit /path/to/script

服务失败并显示:

/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server`
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error

/var/log/Xorg.0.log包含:

(WW) NVIDIA(GO): Unable to get display device for DPI computation.
(WW) NVIDIA(GO): Option "metamodes" is not used
(WW) NVIDIA(GO): Failed to set the display configuration
(WW) NVIDIA(GO):  - Setting a mode on head 0 failed: Insufficient permissions
(WW) NVIDIA(GO):  - Setting a mode on head 1 failed: Insufficient permissions
(WW) NVIDIA(GO):  - Setting a mode on head 2 failed: Insufficient permissions
(WW) NVIDIA(GO):  - Setting a mode on head 3 failed: Insufficient permissions

更新2:更加接近。

从 TTY2,我运行xinit 从 TTY3,我运行systemctl --user start disp@{0,1,2,3,4,5,6} vnc@{0,1,2,3,4,5,6}

哪里:~/.config/systemd/user/[email protected]

[Service]
Environment=DISPLAY:0.%i
ExecStart=cvlc /path/to/file%i.mp4

以及 ~/.config/systemd/user/ 的位置[电子邮件受保护]` 是:

[Service]
Environment=DISPLAY:0.%i
ExecStart=x11vnc -display :0.%i

现在我只需要弄清楚如何让该用户在启动时登录然后运行xinit

相关内容