Мне скоро придется перенести всю компьютерную лабораторию (около 50 компьютеров) с Windows 7 на Ubuntu 14.04 LTS. Поскольку это университет, 99% времени (если не 100%) он будет использоваться студентами. Не существует центральной базы данных учетных записей пользователей и учетных данных, поэтому на каждом ПК будет только две учетные записи, admin
и guest
, причем последняя настроена на автоматическое включение (кроме некоторой настройки согласно данного руководства ) .
Когда ПК включены, а гостевая учетная запись входит в автоматический вызов, первое, что отображается после загрузки оконного менеджера, это диалоговое окно:
Однако есть две проблемы:
Итак, имея в виду этот сценарий, я хочу добиться, чтобы диалоговое окно, действительно похожее на это (но с другим текстом, заданным мной), всплыло, когда компьютер не используется для скажем, 15 минут. (Для целей этого вопроса давайте предположим, что «не используется» означает отсутствие действий клавиатуры или мыши).
Меня направили на . Как Ubuntu определяет бездействие перед приостановкой? и Как скрипт может обнаружить время простоя пользователя? и использую сценарии ruby или sheel, но я не знаю, как кодировать.
Есть ли более простой способ достичь того, что мне нужно?
Используйте 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 пошел с zenity
xautolock -time 15 -locker "zenity --text='<text here>' --warning"
При выполнении следующего сценария в фоновом режиме он будет проверять время простоя каждые 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 используется, Вы потребность для использования возвратов, или иначе сообщение будет чрезмерно широко. Вот то, что я закончил тем, что делал:
xautolock -time 15 -locker "zenity --text='<text here>' --warning"
я добавил, что строка как запись на приложениях сеанса учетной записи, которая является мягка связанный с /etc/guest-session/skel
, таким образом, это выполнит каждый раз гостевую сессию, запускается.