저는 bash 스크립트를 작성하고 애플리케이션이 실행 중인지 확인하고 있습니다. 실행 중이 아닌 경우 별도의 프로세스(하위 프로세스 아님)에서 시작해야 합니다. 실행 중이면 창이 최대화되어야 합니다. 그렇게 했는데 새 프로세스가 시작하자마자 종료되었는데, 아마도 스크립트 프로세스가 종료되었기 때문인 것 같습니다. &를 통해 백그라운드에서 실행하지 않으면 앱이 닫히지 않지만 앱을 최대화하기 위해 스크립트를 다시 실행할 수 없습니다.
#!/bin/bash
if pgrep app
then
echo app is running
# Maximize the app
wmctrl -x -r WMClassOfapp -b "add,maximized_vert,maximized_horz"
else
echo app is not running
/usr/bin/app
fi
터미널에서 실행하니 잘 나오더군요. udev 규칙에서 호출하면 애플리케이션이 종료됩니다. nohup을 사용하면 동일한 결과가 생성됩니다. 이것이 udev 규칙입니다
ACTION=="add" \
, KERNEL=="hci0:3585" \
, SUBSYSTEM=="bluetooth" \
, ENV{DISPLAY}=":0" \
, ENV{HOME}="/home/user"
, RUN+="/home/user/runapp"
답변1
마침내 여기서 해결책을 찾았습니다. 다음을 포함하는 두 번째 스크립트가 필요합니다.
#!/bin/bash
echo /pathto/runApp | at now
이 스크립트는 udev 규칙에서 호출되어야 합니다. 이 기능이 작동하려면 at
설치해야 하며 atd
를 호출하여 활성화 해야 합니다 sudo systemctl enable atd --now
. 약간 해키지만 적어도 작동합니다.
이 게시물이 더 간단한 가이드가 될 수 있도록 systemd 메서드를 제거했습니다.