Command-Line
在所有正在執行的 X 顯示器上顯示通知
使用命令行,我想在每個正在執行的 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。