回答:
このxmessage
ツールを使用すると、まさにそれを実行できます。内部にテキストメッセージを表示してポップアップウィンドウをユーザーに表示します。
例:user2がボックスのBASHセッションにログインして発行します。
export DISPLAY=':0.0'
xmessage "some message here"
TSCHセッションにログインすると、次のようになります。
setenv DISPLAY ':0.0'
xmessage "some message here'
または、次の2つの方法のいずれかでターミナルセッションにメッセージを送信できます。
使用wall
(= [すべてのユーザーに警告])
manページから:
Wallは、現在ログインしているすべてのユーザーの端末に、ファイルの内容またはデフォルトでその標準入力を表示します。
特定のユーザーをターゲットにする場合は、を使用しますwrite
。もう一度、男は私たちに言います:
書き込みユーティリティを使用すると、端末から行をコピーして、他のユーザーと通信できます。
xmessage
いますが、それを実行してuser1
、この小さなウィンドウをuser2
画面に開く方法は?それも可能ですか?
いずれかから、協力:あなたは2つのいずれかが必要ですので、原則として、X11セッションは通常、「プライベート」モードで起動されuser2
、あなたはそれらの画面に「でブレーク」に自分の画面、またはスーパーユーザ権限にアクセスできるようにします。
危険:画面にアクセスできるようになったら、キーストローク(パスワードを含む可能性があります)をキャプチャーしたり、スクリーンショットを撮ったりすることもできるので、これは大きなセキュリティリスクです。
では、ほとんどのケースではなく、これらのもののためのメッセージングツールやチャットプログラムを使用することが好ましいです。
脇に注意:
協力する
画面へのアクセスuser2
を許可user1
する場合は、最初にuser2
次のようなコマンドを発行する必要があります。
xhost +si:localuser:user1
これは、ある種の起動スクリプトに追加される可能性があります。私はFluxboxを知りませんが、それはrc
またはセッション開始フックを持っていると思います。
これが発行されたら、が表示できる場合はのディスプレイにuser1
書き込むuser2
ことができます。
これuser2
を認識している場合は、いつでもuser1
別の方法で送信できます。
別のユーザーのディスプレイを見つける
一般的なワークステーションでは、1人または2人以上のユーザーがログインすることはまれです。この場合、必要な表示が0、1、または2であると「推測」することは、実行可能な解決策になる可能性があります。
ただし、より完全なソリューションとして、非常に多くのユーザーがサインインできるマシンがあると想定して、必要なものを見つけようとします。
for proc in /proc/[0-9]*/
do
if [ Xorg = $(< $proc/comm ) ] 2>/dev/null && \
[ $(id -u user2) -eq $(< $proc/loginuid) ] 2>/dev/null
then
for subproc in $(
do
echo "user2 display=" $(perl -ne 'if (m,DISPLAY=(.*)\0,) { print $1 }' < $subproc/environ)
done
fi
done
次に、user1
最後にできます(上記で取得したDISPLAY値を使用します。:14.0
ここに書きました...)
DISPLAY=:14.0 xmessage "Hello, user2"
代わりに通知を送信する
完全を期すために、少なくとも以下はGnomeデスクトップで動作します。Fluxboxに通知ウィジェットがあるかどうかはわかりません。
DISPLAY=:14.0 notify-send "Hello, user2"
これには表示のためのよりユーザーフレンドリーなオプションがあり、おそらくユーザーの画面にやや友好的な方法でポップアップします。
for subproc in
何?ここではスクリプトが壊れていると思います。
user1
私の例では)がX11にログインしていて、開いていなかっxterm
たり、他の端末を開いていなかったりする場合-wall
動作しますか?user1
メッセージは表示されないと思います。