Le xmessage
l'outil vous permet de faire exactement cela ; présenter une fenêtre contextuelle aux utilisateurs avec un message texte à l'intérieur.
Exemple :l'utilisateur2 se connecte à une session BASH sur la boîte et émet :
export DISPLAY=':0.0'
xmessage "some message here"
si vous vous connectez à une session TSCH, ce serait quelque chose comme ça :
setenv DISPLAY ':0.0'
xmessage "some message here'
Vous pouvez également envoyer des messages aux sessions de terminal de deux manières :
Utilisation de wall
(=avertir tous les [utilisateurs])
À partir de la page de manuel :
Wall affiche le contenu du fichier ou, par défaut, son entrée standard, sur les terminaux de tous les utilisateurs actuellement connectés.
Si vous souhaitez cibler un utilisateur spécifique, utilisez write
. Encore une fois, l'homme nous dit :
L'utilitaire d'écriture vous permet de communiquer avec d'autres utilisateurs, en copiant des lignes de votre terminal vers le leur.
En règle générale, les sessions X11 sont généralement démarrées en mode "privé", vous avez donc besoin de l'une des deux choses suivantes :soit, la coopération de user2
pour vous permettre d'accéder à leurs écrans, ou des privilèges de superutilisateur pour "entrer par effraction" sur leurs écrans.
DANGER : N'oubliez pas qu'une fois que vous avez accès à leur écran, vous pouvez également capturer des frappes au clavier (y compris éventuellement des mots de passe) et prendre des captures d'écran. Il s'agit donc d'un risque de sécurité important.
Dans la plupart cas, il est préférable d'utiliser un outil de messagerie ou un programme de chat pour ces choses.
Mises en garde mises à part :
Coopérer
Si user2
veut autoriser user1
pour accéder à son écran, puis d'abord user2
doit émettre une commande comme :
xhost +si:localuser:user1
Cela pourrait potentiellement être ajouté à un script de démarrage quelconque; Je ne connais pas Fluxbox, mais je suppose qu'il a un rc
ou crochet de démarrage de session.
Une fois que cela a été émis, user1
peut alors écrire dans user2
s'affiche, s'il peut le trouver.
Si user2
en est conscient, il peut toujours l'envoyer au user1
d'une autre manière.
Rechercher l'écran d'un autre utilisateur
Sur un poste de travail typique, il est inhabituel d'avoir plus d'un ou deux utilisateurs connectés; dans ce cas, "deviner" que l'affichage que vous voulez est 0, 1 ou peut-être 2 pourrait être une solution viable.
Cependant, pour une solution plus complète, supposons que vous disposez d'une machine sur laquelle de très nombreux utilisateurs peuvent être connectés, et essayez de trouver celui que vous souhaitez.
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
puis, user1
peut enfin (en utilisant la valeur DISPLAY obtenue ci-dessus ; je viens d'écrire :14.0
ici…)
DISPLAY=:14.0 xmessage "Hello, user2"
Envoi d'une notification à la place
Dans un souci d'exhaustivité, ce qui suit fonctionne au moins sur le bureau Gnome. Je ne sais pas si Fluxbox a un widget de notification.
DISPLAY=:14.0 notify-send "Hello, user2"
Cela a beaucoup plus d'options conviviales pour l'affichage, et apparaîtra probablement de manière plutôt conviviale sur l'écran de l'utilisateur.