Il xmessage
lo strumento ti consente di fare esattamente questo; presentare una finestra popup agli utenti con un messaggio di testo all'interno.
Esempio:l'utente2 accede a una sessione BASH sulla scatola ed emette:
export DISPLAY=':0.0'
xmessage "some message here"
se accedi a una sessione TSCH, sarebbe qualcosa del genere:
setenv DISPLAY ':0.0'
xmessage "some message here'
In alternativa, puoi inviare messaggi alle sessioni terminali in uno dei seguenti due modi:
Usando wall
(=avvisa tutti [utenti])
Dalla pagina man:
Wall visualizza il contenuto del file o, per impostazione predefinita, il suo input standard, sui terminali di tutti gli utenti attualmente connessi.
Se vuoi scegliere come target un utente specifico, usa write
. Ancora una volta, l'uomo ci dice:
L'utility di scrittura ti permette di comunicare con altri utenti, copiando le righe dal tuo terminale al loro.
Di norma, le sessioni X11 vengono solitamente avviate in modalità "privata", quindi è necessaria una delle due cose:o, collaborazione da user2
per consentirti di accedere ai loro schermi o privilegi di superutente per "intrufolarti" nei loro schermi.
PERICOLO: Tieni presente che, una volta che hai accesso al loro schermo, puoi anche eseguire operazioni come acquisire sequenze di tasti (potenzialmente incluse password) e acquisire schermate, quindi questo è un grosso rischio per la sicurezza.
Nella maggior parte casi è preferibile invece utilizzare uno strumento di messaggistica o un programma di chat per queste cose.
Avvertenze a parte:
Cooperazione
Se user2
vuole consentire user1
per accedere alla loro schermata, quindi prima user2
deve emettere un comando come:
xhost +si:localuser:user1
Questo potrebbe potenzialmente essere aggiunto a uno script di avvio di qualche tipo; Non conosco Fluxbox, ma presumo abbia un rc
o hook di inizio sessione.
Una volta che questo è stato emesso, user1
può quindi scrivere a user2
, se riescono a trovarlo.
Se user2
ne è a conoscenza, può sempre inviarlo a user1
in qualche altro modo.
Trovare il display di un altro utente
Su una tipica workstation, è raro che più di uno o due utenti abbiano effettuato l'accesso; in tal caso, "indovinare" che il display desiderato sia 0, 1 o forse 2 potrebbe essere una soluzione praticabile.
Tuttavia, per una soluzione più completa, supponiamo che tu disponga di un computer in cui potrebbero essere registrati molti utenti e prova a trovare quello che desideri.
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
quindi, user1
può finalmente (usando il valore DISPLAY ottenuto sopra; ho appena scritto :14.0
qui…)
DISPLAY=:14.0 xmessage "Hello, user2"
Invia invece una notifica
Nell'interesse della completezza, quanto segue funziona almeno sul desktop Gnome. Non so se Fluxbox ha un widget di notifica.
DISPLAY=:14.0 notify-send "Hello, user2"
Questo ha opzioni di visualizzazione molto più intuitive e probabilmente apparirà in un modo piuttosto amichevole sullo schermo dell'utente.