Показать диалоговое окно после периода бездействия

Мне скоро придется перенести всю компьютерную лабораторию (около 50 компьютеров) с Windows 7 на Ubuntu 14.04 LTS. Поскольку это университет, 99% времени (если не 100%) он будет использоваться студентами. Не существует центральной базы данных учетных записей пользователей и учетных данных, поэтому на каждом ПК будет только две учетные записи, admin и guest, причем последняя настроена на автоматическое включение (кроме некоторой настройки согласно данного руководства ) .

Когда ПК включены, а гостевая учетная запись входит в автоматический вызов, первое, что отображается после загрузки оконного менеджера, это диалоговое окно:

enter image description here

Однако есть две проблемы:

  1. Самый первый человек, который сидит за компьютером в 9:00, увидит диалоговое окно, щелкнет ОК, использует компьютер, выйдет, не заканчивая сеанс или не заблокировав экран (потому что пользователи), а второй пользователь и дальше не увидит сообщение
  2. Существует более релевантная информация, которую я хотел бы донести до пользователей лаборатории (лабораторные правила и т. д.).

Итак, имея в виду этот сценарий, я хочу добиться, чтобы диалоговое окно, действительно похожее на это (но с другим текстом, заданным мной), всплыло, когда компьютер не используется для скажем, 15 минут. (Для целей этого вопроса давайте предположим, что «не используется» означает отсутствие действий клавиатуры или мыши).

Меня направили на . Как Ubuntu определяет бездействие перед приостановкой? и Как скрипт может обнаружить время простоя пользователя? и использую сценарии ruby ​​или sheel, но я не знаю, как кодировать.

Есть ли более простой способ достичь того, что мне нужно?

4
задан 13 April 2017 в 15:24

3 ответа

Используйте 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"
0
ответ дан 13 April 2017 в 15:24
  • 1
    Теперь I' m использование 4,2 ядер и it' s не работающий. Я попробовал вручную конфигурацию и это wasn' t работающий также. – Patryk Tabiś 31 December 2015 в 01:43

При выполнении следующего сценария в фоновом режиме он будет проверять время простоя каждые 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)

enter image description here

, Как использовать

  • установка xprintidle:

    sudo apt-get install xprintidle
    
  • Копия сценарий в пустой файл, набор время простоя (t) в минутах и установленный путь к текстовому файлу, содержащему Ваш текст сообщения. Сохраните его как set_warning.py

  • Выполнение это Примечаниями команды

    python3 /path/to/set_warning.py
    

  • По причинам удобства (и управлять текстовым расположением), текст взят из внешнего текстового файла. Возвраты и т.д. будут скопированы точно с текстового файла в Ваше сообщение. Начиная с --no-wrap опция от zenity используется, Вы потребность для использования возвратов, или иначе сообщение будет чрезмерно широко.
  • способ, которым появляется сообщение, можно "настроить" с другими zenity опциями.
0
ответ дан 13 April 2017 в 15:24
  • 1
    Вторая опция работала на меня. Спасибо за разрешение этого я не забываю читать о порядке расширений, но didn' t думают для применения его здесь. – mike3759 24 December 2015 в 13:28

Вот то, что я закончил тем, что делал:

xautolock -time 15 -locker "zenity --text='<text here>' --warning"

я добавил, что строка как запись на приложениях сеанса учетной записи, которая является мягка связанный с /etc/guest-session/skel, таким образом, это выполнит каждый раз гостевую сессию, запускается.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: