xmessage
ツールを使用すると、まさにそれが可能になります。内部にテキスト メッセージを含むポップアップ ウィンドウをユーザーに表示します。
例:user2 がボックスの BASH セッションにログインし、以下を発行します:
export DISPLAY=':0.0'
xmessage "some message here"
TSCH セッションにログインすると、次のようになります:
setenv DISPLAY ':0.0'
xmessage "some message here'
または、次の 2 つの方法のいずれかでターミナル セッションにメッセージを送信できます。
wall
の使用 (=すべての [ユーザー] に警告)
マニュアルページから:
Wall は、現在ログインしているすべてのユーザーの端末に、ファイルの内容、またはデフォルトではその標準入力を表示します。
特定のユーザーをターゲットにする場合は、write
を使用します .繰り返しますが、人は私たちに次のように言います:
write ユーティリティを使用すると、自分の端末から他のユーザーの端末に行をコピーすることで、他のユーザーと通信できます。
原則として、X11 セッションは通常「プライベート」モードで開始されるため、次の 2 つのいずれかが必要です: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"
これには、よりユーザーフレンドリーな表示オプションがあり、おそらくユーザーの画面上でよりフレンドリーな方法でポップアップ表示されます.