udev 규칙에서 GUI 애플리케이션 실행

udev 규칙에서 GUI 애플리케이션 실행

특정 USB 장치가 연결되어 있을 때 GUI 응용 프로그램을 실행하려고 합니다. udev 규칙이 실행되었지만 앱이 내 화면에 나타납니다. 다른 TTY에서 스크립트를 실행하면 애플리케이션이 내 그래픽 환경에서 열립니다. 또한 규칙의 날짜를 파일에 추가하여 규칙이 실행되었는지 확인할 수도 있습니다.

/etc/udev/rules.d/99-betaflight.rules:

SUBSYSTEMS=="usb", ATTR{serial}=="314839673237", RUN+="/usr/bin/su daniel -c '/home/daniel/bin/betaflight-configurator'"

/home/daniel/bin/betaflight-configurator:

#!/bin/bash

export DISPLAY=:1
/opt/betaflight/betaflight-configurator/betaflight-configurator

내 이해는 GUI 응용 프로그램이 X 서버의 컨텍스트에서 시작되지 않기 때문에 시작하는 데 어려움이 있다는 것입니다. 그러나 다른 tty에서 코드를 실행하면 애플리케이션이 완벽하게 열립니다.

USB 장치가 연결되어 있을 때 앱이 실행되도록 하려면 어떤 개선이 필요합니까?

답변1

&udev 규칙에서 장기 실행 프로그램을 시작하면 안 됩니다. udevd는 스크립트를 통해 백그라운드에서 실행하려고 해도 짧은 시간 안에 해당 프로그램을 종료합니다 . 그것은 또한 그들의 길에 다른 장애물을 놓을 것입니다.

atd더 이상 사용되지 않는 접근 방식은 데몬을 설치 하고 echo some_command | at now. 온라인에서 이에 대한 많은 예를 찾을 수 있습니다.

실제로 해야 할 일은 어떤 종류의 시스템을 가지고 있는지에 따라 다릅니다. "현대적인" 시스템에서는 systemd 사용법을 배우는 것 외에는 선택의 여지가 없습니다(전율).

관련 정보