USB를 연결한 후 udev 규칙으로 GUI 애플리케이션을 실행하시겠습니까?

USB를 연결한 후 udev 규칙으로 GUI 애플리케이션을 실행하시겠습니까?

그래서 udev를 이용하여 GUI 어플리케이션을 실행해 보려고 하는데 성공률은 0이고,

Xauthority 파일을 찾아서 디스플레이 변수를 스크립트에 넣어야 한다는 내용을 어딘가에서 읽었는데, 이것이 맞나요? 그렇다면 누구나 샘플 스크립트를 작성할 수 있습니까?

미리 감사드립니다 :)

내 현재 설정:

SUBSYSTEMS=="usb", ATTRS{idProduct}=="1337", ACTION=="add", RUN+="/usr/local/bin/New.sh"

스크립트New.sh

#!/bin/sh
./New2.sh & exit

스크립트New2.sh

#!/bin/sh
vlc v4l2:///dev/video0

답변1

Samsung Android 장치에 대한 내 작업 솔루션을 따르십시오...

다음과 같은 스크립트를 작성하세요 /etc/udev/rules.d.

#!/bin/bash

su <NON_ROOT_USER> -c <YOUR_GUI_APPLICATION>

실행 udevadm monitor -e하여 장치 경로(예 /devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-2: )를 확인하고 기록해 둡니다.

udevadm info -ap <YOUR_DEVICE_PATH>udev 구성 폴더에 넣을 규칙을 얻으려면 실행하세요 . 예를 들어

  ACTION=="add" \
, SUBSYSTEM=="usb" \
, ENV{DEVTYPE}=="usb_device" \
, ATTRS{idVendor}=="04e8" \
, ATTRS{idProduct}=="6860" \
, ATTR{product}=="SAMSUNG_Android" \
, ATTR{serial}=="R58MC3542ZX"

스크립트를 작성하고 이름을 지정 50-my-android-device.rules하십시오 /etc/udev/rules.d.

  ACTION=="add" \
, SUBSYSTEM=="usb" \
, ENV{DEVTYPE}=="usb_device" \
, ATTRS{idVendor}=="04e8" \
, ATTRS{idProduct}=="6860" \
, ATTR{product}=="SAMSUNG_Android" \
, ATTR{serial}=="R58MC3542ZX" \
, ENV{DISPLAY}=":0.0" \
, RUN+="/etc/udev/rules.d/<MY_RUNNABLE.SCRIPT>"

관련 정보