以下は、私が知る必要があると思う他の質問です:
-
X以外のセッションから? (ルートがXにログインしていないことを意味します)
-
複数の人がXにログインしている場合、誰がどの画面にいるのかを自動検出して、アプリを起動する必要がある画面をプログラムで検出できますか?
-
ユーザーとしてアプリを起動できますか? (わかりました、99.999%はこれがイエスだと確信しています)
-
グループXのユーザーがXにログインしているかどうかを検出できますか?
承認された回答:
ユーザーのデスクトップでグラフィカルプログラムを起動するには、ユーザーのデスクトップが表示されているもの(アドレス)と使用する認証Cookie(パスワード)の2つを見つける必要があります。
次のコマンドは、ほとんどのユニスでユーザーがログオンしているローカルディスプレイ(1行に1つ)を一覧表示する必要があります。
who | awk -v user="$target_user" '$1 == user && $2 ~ "^:" {print $2}'
承認Cookieを見つけるのは少し難しいです。 ~/.Xauthority
であるユーザーのCookieファイルを探す必要があります デフォルトでは(必要なのはCookieファイルの場所だけであり、そこからCookieを抽出する必要はありません)。これは多くのシステムで機能しますが、すべてではありません。それはディスプレイマネージャーとそれがどのように設定されているかに依存し、特にGdm(Ubuntuのデフォルト)は私が最後に見たデフォルトの場所を使用しませんでした。実際のXcookieファイルを見つけるためのポータブルな方法は考えられません。見つけるための最も正確な方法は、Xプロセスのpidを見つけて、-auth
への引数を探すことです。 オプション。もう1つの方法は、そのXサーバーで実行されているプロセスを見つけて、そのXAUTHORITY
を取得することです。 environemnt変数。 Cookieファイルが見つからない場合は、リモートXディスプレイでウィンドウを開く(「ディスプレイを開けない」理由)を参照してください。
両方の情報を入手したら、選択したディスプレイをDISPLAY
に配置します 環境変数、XAUTHORITY
で選択されたXオーソリティCookieファイル 環境変数、そしてあなたは設定されています。プログラムがどのユーザーとして実行されているかは関係ありません。 su
と組み合わせる よろしければ。