起動時にQtアプリケーションを起動したいです。アプリケーションはweston / waylandデスクトップの一部の機能を使用しているため、westonが起動するとすぐにwestonの上で起動する必要があります。通常、SSHを使用してターゲットプラットフォームに接続し、次のコマンドでアプリケーションを起動します。
systemctl stop weston
weston --tty=1
./QtApp
westonを終了せずにTTYで起動すると、次のエラーが発生します。
Failed to create display
私が試したことは、起動スクリプトを設定し、それをsystemdに統合することです。
[Unit]
Description = Onyx Service
After = weston.service
Type = forking
[Service]
ExecStart = /bin/bash /opt/onyx-start
[Install]
WantedBy = multi-user.target
しかし、推測できるように、これは機能しません。 TTYオプションで起動されていない既存のwestonインスタンスからアプリケーションを起動しようとしています。
ベストアンサー1
通常、これは特定のttyでWestonを起動するのではなく、正しいWaylandインスタンスとWestonインスタンスにパスを指定する環境変数を設定することです。これらの変数は、XWaylandが必要なアプリケーションWAYLAND_DISPLAY
にも適用されます。DISPLAY
/etc/profile.d/weston.sh
wayland_env.sh
通常、(または場合によっては)などのファイルをインポートして、必要な正しい環境を取得できます。これは通常シェルにログインしたときに行われますが、システム操作はシェルを起動しないため、これらの変数は設定されません。
たぶん、次のようにしてみてくださいonyx-start
。
#!/bin/sh
. /etc/profile.d/weston.sh
exec /path/to/QtApp
あなたが持っているサービス部門はこれを行うべきです。
(それでもうまくいかない場合は、使用しているLinuxディストリビューション、の内容weston.service
、の出力、またはsystemctl status weston.service
の内容、新しいWestonを起動せずにSSH経由でQtAppを起動するかどうかなど、環境の詳細を一覧表示します。環境設定ファイルをインポートした後そのため、これらの変数がこれらの接続に設定されていない場合があります。weston.sh
wayland_env.sh