私は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
最後にここで解決策を見つけました。次を含む2番目のスクリプトが必要です。
#!/bin/bash
echo /pathto/runApp | at now
このスクリプトはudevルールで呼び出す必要があります。この機能を機能させるには、インストールする必要があり、呼び出してat
有効にする必要がatd
ありますsudo systemctl enable atd --now
。少しハッキーですが、少なくとも動作します。
この投稿がより簡単なガイドになるように、systemdメソッドを削除しました。