시작 시 웨스턴 위에 Qt/wayland 애플리케이션 실행

시작 시 웨스턴 위에 Qt/wayland 애플리케이션 실행

시작 시 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.shwayland_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.shwayland_env.sh

답변2

@filbranden의 답변에 추가하거나 /etc/profile.d/weston.shwayland_env.sh이상 배포하지 않으려면 다음 스크립트가 도움이 되었습니다.

#!/bin/bash
weston &
sleep 5s # could be less
export WAYLAND_DISPLAY=wayland-0
export DISPLAY=:1
exec /path/to/myapp

관련 정보