私は7つのモニターと2つのGPUを持つコンピュータを実行しています。各モニタは、X入力(マウスやキーボードなし)やデスクトップ環境を必要としない独立したフルスクリーンアプリケーションを実行します。
システムサービスを作成するにはどうすればよいですか?
- 特定のモニターに接続されたXディスプレイを作成する
- このXディスプレイでフルスクリーンアプリケーションを実行する
- このXディスプレイでVNCサーバー(指定されたポート)を実行します。
私は7つのモニターごとにこれらのサービスの1つを作成する予定です。
アップデート:ますます近づいています。これで、各モニターに対してWindowsとVNCを実行できます。それでも自動的には実行できず、スクリプトを複数のサービスに分割する方法がわかりません。
まず、別の画面で各モニターに1つを作成しました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/ の場所[Eメール保護]`は:
[Service]
Environment=DISPLAY:0.%i
ExecStart=x11vnc -display :0.%i
これで、起動時にそのユーザーにログインして実行する方法を理解できますxinit
。