xmessage
nástroj vám umožňuje přesně to; prezentovat uživatelům vyskakovací okno s textovou zprávou uvnitř.
Příklad:uživatel2 se přihlásí do relace BASH na boxu a zadá:
export DISPLAY=':0.0'
xmessage "some message here"
pokud se přihlásíte do relace TSCH, bude to asi toto:
setenv DISPLAY ':0.0'
xmessage "some message here'
Případně můžete posílat zprávy do terminálových relací jedním ze dvou způsobů:
Pomocí wall
(=varovat všechny [uživatele])
Z manuálové stránky:
Wall zobrazuje obsah souboru nebo standardně jeho standardní vstup na terminálech všech aktuálně přihlášených uživatelů.
Pokud chcete cílit na konkrétního uživatele, použijte write
. Opět nám muž říká:
Nástroj pro zápis vám umožňuje komunikovat s ostatními uživateli kopírováním řádků z vašeho terminálu do jejich.
Zpravidla se relace X11 obvykle spouštějí v „soukromém“ režimu, takže potřebujete jednu ze dvou věcí:buď spolupráci z user2
které vám umožní přístup k jejich obrazovkám nebo oprávnění superuživatele „proniknout“ na jejich obrazovky.
NEBEZPEČÍ: Mějte na paměti, že jakmile budete mít přístup k jejich obrazovce, můžete také dělat věci, jako je zachytit stisknuté klávesy (potenciálně včetně hesel) a pořizovat snímky obrazovky, takže je to velké bezpečnostní riziko.
Ve většině v případech je pro tyto věci vhodnější použít nástroj pro zasílání zpráv nebo chatovací program.
Upozornění stranou:
Spolupráce
Pokud user2
chce povolit user1
pro přístup k jejich obrazovce, poté nejprve user2
musí vydat příkaz jako:
xhost +si:localuser:user1
To by mohlo být potenciálně přidáno do nějakého spouštěcího skriptu; Fluxbox neznám, ale předpokládám, že má rc
nebo session-start hook.
Jakmile toto bylo zadáno, user1
pak může zapisovat do user2
's displej, pokud jej najdou.
Pokud user2
si je toho vědoma, může to vždy poslat na user1
nějakým jiným způsobem.
Vyhledání zobrazení jiného uživatele
Na typické pracovní stanici je neobvyklé mít více než jednoho nebo dva přihlášené uživatele; v takovém případě může být funkčním řešením „hádání“, že požadovaný displej je 0, 1 nebo možná 2.
Pro úplnější řešení však předpokládejme, že máte počítač, na kterém se může přihlásit velmi mnoho uživatelů, a pokuste se najít toho, kterého chcete.
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
pak user1
konečně can (pomocí hodnoty DISPLAY získané výše; právě jsem napsal :14.0
zde…)
DISPLAY=:14.0 xmessage "Hello, user2"
Namísto toho odeslat oznámení
V zájmu úplnosti, následující funguje alespoň na ploše Gnome. Nevím, jestli Fluxbox má oznamovací widget.
DISPLAY=:14.0 notify-send "Hello, user2"
To má mnohem uživatelsky přívětivější možnosti zobrazení a pravděpodobně se na obrazovce uživatele objeví poněkud přátelštějším způsobem.