El xmessage
tool te permite hacer exactamente eso; presentar una ventana emergente a los usuarios con un mensaje de texto dentro.
Ejemplo:usuario2 inicia sesión en una sesión BASH en el cuadro y emite:
export DISPLAY=':0.0'
xmessage "some message here"
si inicia sesión en una sesión de TSCH, sería algo como esto:
setenv DISPLAY ':0.0'
xmessage "some message here'
Alternativamente, puede enviar mensajes a sesiones de terminal de una de estas dos maneras:
Usando wall
(=advertir a todos los [usuarios])
De la página del manual:
Wall muestra el contenido del archivo o, de forma predeterminada, su entrada estándar, en los terminales de todos los usuarios conectados actualmente.
Si desea dirigirse a un usuario específico, use write
. Nuevamente, el hombre nos dice:
La utilidad de escritura le permite comunicarse con otros usuarios copiando líneas de su terminal a la de ellos.
Por regla general, las sesiones X11 suelen iniciarse en modo "privado", por lo que necesita una de dos cosas:la cooperación de user2
para permitirle acceder a sus pantallas, o privilegios de superusuario para "irrumpir" en sus pantallas.
PELIGRO: Tenga en cuenta que una vez que tenga acceso a su pantalla, también puede hacer cosas como capturar pulsaciones de teclas (posiblemente incluyendo contraseñas) y tomar capturas de pantalla, por lo que esto es un gran riesgo de seguridad.
En la mayoría casos, es preferible usar una herramienta de mensajería o un programa de chat para estas cosas.
Advertencias aparte:
Cooperación
Si user2
quiere permitir user1
para acceder a su pantalla, primero user2
debe emitir un comando como:
xhost +si:localuser:user1
Esto podría agregarse potencialmente a un script de inicio de algún tipo; No conozco Fluxbox, pero supongo que tiene un rc
o gancho de inicio de sesión.
Una vez que se haya emitido, user1
luego puede escribir a user2
la pantalla de , si pueden encontrarla.
Si user2
es consciente de esto, siempre puede enviarlo a user1
de alguna otra manera.
Encontrar la pantalla de otro usuario
En una estación de trabajo típica, es inusual tener más de uno o dos usuarios conectados; en cuyo caso, "adivinar" que la pantalla que desea es 0, 1 o tal vez 2 podría ser una solución viable.
Sin embargo, para una solución más completa, supongamos que tiene una máquina en la que muchos usuarios pueden iniciar sesión e intente encontrar el que desea.
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
entonces, user1
puede finalmente (usando el valor DISPLAY obtenido arriba; acabo de escribir :14.0
aquí…)
DISPLAY=:14.0 xmessage "Hello, user2"
Enviar una notificación en su lugar
En aras de la exhaustividad, lo siguiente funciona en el escritorio de Gnome, al menos. No sé si Fluxbox tiene un widget de notificación.
DISPLAY=:14.0 notify-send "Hello, user2"
Esto tiene muchas más opciones de visualización fáciles de usar y probablemente aparecerá de una manera bastante más amigable en la pantalla del usuario.