一段時間不活動後顯示對話框

一段時間不活動後顯示對話框

我很快就必須將整個電腦實驗室(大約 50 台 PC)從 Windows 7 移轉到 Ubuntu 14.04 LTS。由於它是一所大學,99%(如果不是 100%)的時間都會由學生使用。沒有使用者帳戶和憑證的中央資料庫,因此每台 PC 將只有兩個帳戶,admin並且guest後者配置為自動登入(除了根據本教程)。

當電腦開啟並且訪客帳戶自動登入時,載入視窗管理器後首先顯示的是以下對話方塊:

在此輸入影像描述

然而,有兩個問題:

  1. 上午9 點坐在電腦前的第一個人將看到該對話框,單擊“確定”,使用PC,離開,而不是結束會話或鎖定螢幕(因為用戶),第二個用戶之後將不會看到該訊息
  2. 我想向實驗室用戶傳達更多相關資訊(實驗室規則等)。

因此,考慮到這種情況,我想要實現的是,每當計算機不使用(例如 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,因此每次來賓會話啟動時它將運行。

相關內容