Command-Line

在所有正在執行的 X 顯示器上顯示通知

  • August 30, 2020

使用命令行,我想在每個正在執行的 X 顯示器上顯示一個通知。(和執行控制台)

就像是:

notify-send-all 'Warning' 'Nuclear launch in 5 minutes, please evacuate'

有沒有程序可以做到這一點?如果沒有,這可以用 bash 實現嗎?

您可以使用命令牆向所有控制台發送消息。

對於在 X 下發送通知,有 notify-send 可以在目前顯示器上向目前使用者發送通知。(從您的問題來看,我猜您已經知道這個問題了。)您可以在此基礎上編寫一些 bash 腳本。基本上,您必須找出哪些使用者在哪些 X-Display 上。獲得此資訊後,您可以像這樣使用 notify-send:

DISPLAY=:0 sudo -u fschmitt notify-send "Message"

其中 fschmitt 是顯示 0 處的使用者。您可以解析“who”命令的輸出以查找所有使用者及其顯示。輸出看起來像這樣

[edinburgh:~]$ who
markmerk3 tty7         2010-09-23 10:59 (:0)
markmerk3 pts/1        2010-09-30 13:30 (:0.0)
fschmitt pts/2        2010-10-08 11:44 (ip-77-25-137-234.web.vodafone.de)
markmerk3 pts/0        2010-09-29 18:51 (:0.0)
seamonkey pts/6        2010-09-27 15:50 (:1.0)
markmerk3 pts/5        2010-09-27 14:04 (:0.0)
seamonkey tty8         2010-09-27 15:49 (:1)
markmerk3 pts/13       2010-09-28 17:23 (:0.0)
markmerk3 pts/3        2010-10-05 10:40 (:0.0)

你看,有兩個使用者在執行 X 會話,markmerk3 在顯示 0 和 seamonkey 在顯示 1。我認為你需要 grep 獲取 tty

$$ 0-9 $$* 然後確保在行尾有 (:$$ 0-9. $$*) 擺脫控制台登錄並從括號之間的字元串中提取顯示ID。

引用自:https://unix.stackexchange.com/questions/2881