他のユーザーとして実行されているスクリプトのデスクトップ通知を表示するために送信された通知

他のユーザーとして実行されているスクリプトのデスクトップ通知を表示するために送信された通知

次のスクリプトがあります。

#!/bin/sh

notificationMessage="Your session is going to expire soon"
if [ $# == 2 ]; then
  notificationMessage="Your session is going to expire in $2 hour"
fi

# echo "$notificationMessage"

sudo -u userA notify-send "Session Expiration Notification" "$notificationMessage" -u normal -t 10000

端末で上記のスクリプトを実行すると(次にログイン)リモートユーザー)、ユーザーA画面で通知を表示する機能。ただし、スクリプトがサービスで実行されている場合(次に実行)リモートユーザー)、通知は表示されませんユーザーA

私は何が間違っていましたか?

注:リモートユーザーにはsudo権限があります。

答え1

ただし、サービスでスクリプトを実行している場合(RemoteUserとして実行)、userAには通知は表示されません。

デフォルトでは、X.orgは単一のアクティブなユーザーセッションへのアクセスを制限します。この問題を解決する方法はいくつかあります。

  1. 使用export DISPLAY=:0sudo your_currentuser notification_command
  2. xhost +SI:localuser:remoteUserremoteUserXアプリケーションがセッションで実行されるようにするには、ユーザーセッションで実行します。スクリプトでまだ使用する必要があります。export DISPLAY=:0

追加情報:

関連情報