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>"

関連情報