
我很快就必須將整個電腦實驗室(大約 50 台 PC)從 Windows 7 移轉到 Ubuntu 14.04 LTS。由於它是一所大學,99%(如果不是 100%)的時間都會由學生使用。沒有使用者帳戶和憑證的中央資料庫,因此每台 PC 將只有兩個帳戶,admin
並且guest
後者配置為自動登入(除了根據本教程)。
當電腦開啟並且訪客帳戶自動登入時,載入視窗管理器後首先顯示的是以下對話方塊:
然而,有兩個問題:
- 上午9 點坐在電腦前的第一個人將看到該對話框,單擊“確定”,使用PC,離開,而不是結束會話或鎖定螢幕(因為用戶),第二個用戶之後將不會看到該訊息
- 我想向實驗室用戶傳達更多相關資訊(實驗室規則等)。
因此,考慮到這種情況,我想要實現的是,每當計算機不使用(例如 15 分鐘)時,就會彈出一個與此非常相似的對話框(但具有不同的文本,由我設定)。 (出於此問題的目的,我們假設“未使用”意味著沒有鍵盤或滑鼠活動)。
我已被引導至 ubuntu 如何在掛起之前確定不活動狀態? 和 腳本如何偵測使用者的空閒時間? 並使用 ruby 或 sheel 腳本,但我不知道如何編碼。
有沒有更簡單的方法來實現我所需要的?
答案1
使用xautolock
xautolock -time 15 -locker notify-send -t time "Title" "message_here" -i "path/to/icon"
或使用 zenity 或任何您想要的對話框。
看http://manpages.ubuntu.com/manpages/trusty/man1/xautolock.1.html
編輯:編輯問題後,OP 變得充滿活力
xautolock -time 15 -locker "zenity --text='<text here>' --warning"
答案2
如果您在背景執行以下腳本,它將每 5 秒檢查一次空閒時間。如果空閒時間超過給定時間(以分鐘為單位),則會出現一條在文字檔案中定義的訊息。 (透過 Zenity 視窗)。
#!/usr/bin/env python3
import subprocess
import time
#########################################
t=15
textfile = "/path/to/message_textfile"
#########################################
with open(textfile, "r") as text:
message = text.read()
while 1!=0:
get_idle = subprocess.Popen(["xprintidle"], stdout=subprocess.PIPE)
result = get_idle.communicate()[0].decode("utf-8")
if int(result)/60000>t:
if warning_given == "yes":
pass
else:
subprocess.Popen(["zenity", "--warning", "--no-wrap", "--text="+message, ])
warning_given = "yes"
else:
warning_given = "no"
time.sleep(5)
如何使用
安裝
xprintidle
:sudo apt-get install xprintidle
將腳本複製到空白文件中,設定空閒時間 (
t
)(以分鐘為單位),並設定包含訊息文字的文字檔案的路徑。另存為set_warning.py
透過命令運行
python3 /path/to/set_warning.py
筆記
- 為了方便起見(並控製文字佈局),文字取自外部文字檔案。退貨等將從文字檔案中準確複製到您的訊息中。由於
--no-wrap
使用了 zenity 中的選項,您需要使用退貨,否則您的資訊將過於寬泛。 - 訊息的顯示方式可以透過其他 zenity 選項進行「調整」。
答案3
這就是我最終所做的:
xautolock -time 15 -locker "zenity --text='<text here>' --warning"
我將該行添加為軟連結到的帳戶的會話應用程式上的條目/etc/guest-session/skel
,因此每次來賓會話啟動時它將運行。