Nach einer Zeit der Inaktivität ein Dialogfeld anzeigen

Nach einer Zeit der Inaktivität ein Dialogfeld anzeigen

Ich werde bald ein ganzes Computerlabor (ca. 50 PCs) von Windows 7 auf Ubuntu 14.04 LTS migrieren müssen. Da es sich um eine Universität handelt, wird es 99 % der Zeit (wenn nicht 100 %) von Studenten genutzt. Es gibt keine zentrale Datenbank mit Benutzerkonten und Anmeldeinformationen, daher wird jeder PC nur zwei Konten haben, adminwobei guestletzteres für die automatische Anmeldung konfiguriert ist (abgesehen von einigen Anpassungen gemäßdieses Tutorial).

Wenn die PCs eingeschaltet sind und sich das Gastkonto automatisch anmeldet, wird nach dem Laden des Fenstermanagers als erstes dieses Dialogfeld angezeigt:

Bildbeschreibung hier eingeben

Es gibt jedoch zwei Probleme:

  1. Die allererste Person, die um 9 Uhr morgens am Computer sitzt, sieht das Dialogfeld, klickt auf „OK“, verwendet den PC, verlässt ihn, beendet die Sitzung nicht und sperrt den Bildschirm nicht (weil Benutzer), und der zweite Benutzer und die nächsten sehen die Meldung nicht
  2. Es gibt weitere relevante Informationen, die ich den Laborbenutzern weitergeben möchte (Laborregeln usw.).

Mit diesem Szenario im Hinterkopf möchte ich ein Dialogfeld haben, das diesem hier sehr ähnlich ist (aber mit einem anderen, von mir festgelegten Text), das immer dann angezeigt wird, wenn ein Computer beispielsweise 15 Minuten lang nicht verwendet wird. (Für diese Frage nehmen wir an, dass „nicht verwendet“ keine Tastatur- oder Mausaktivität bedeutet.)

Ich wurde angewiesen, Wie stellt Ubuntu Inaktivität fest, bevor es angehalten wird? Und Wie kann ein Skript die Leerlaufzeit eines Benutzers erkennen? und verwende Ruby- oder Sheel-Skripte, aber ich kann nicht programmieren.

Gibt es einen einfacheren Weg, um das zu erreichen, was ich brauche?

Antwort1

Verwendenxautolock

xautolock -time 15 -locker notify-send -t time "Title" "message_here" -i "path/to/icon"

oder verwenden Sie Zenity oder einen beliebigen Dialog.

Sehenhttp://manpages.ubuntu.com/manpages/trusty/man1/xautolock.1.html

Edit: Nach der Bearbeitung der Frage ging der OP mit Zenity

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

Antwort2

Wenn Sie das folgende Skript im Hintergrund ausführen, wird die Leerlaufzeit alle 5 Sekunden überprüft. Wenn die Leerlaufzeit eine bestimmte Zeitspanne (in Minuten) überschreitet, wird eine Meldung angezeigt, die in einer Textdatei definiert ist (über ein Zenity-Fenster).

#!/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)

Bildbeschreibung hier eingeben

Wie benutzt man

  • Installieren xprintidle:

    sudo apt-get install xprintidle
    
  • Kopieren Sie das Skript in eine leere Datei, stellen Sie die Leerlaufzeit ( t) in Minuten ein und geben Sie den Pfad zur Textdatei an, die Ihren Nachrichtentext enthält. Speichern Sie es alsset_warning.py

  • Führen Sie es mit dem Befehl aus

    python3 /path/to/set_warning.py
    

Anmerkungen

  • Aus Komfortgründen (und um Kontrolle über das Textlayout zu haben) wird der Text aus einer externen Textdatei entnommen. Zeilenumbrüche etc. werden exakt aus der Textdatei in Ihre Nachricht kopiert. Da die --no-wrapOption von zenity verwendet wird, können Siebrauchendie Rückgaben zu nutzen, da Ihre Nachricht sonst zu allgemein wird.
  • Die Art und Weise, wie die Nachricht angezeigt wird, kann mit anderen Zenity-Optionen „optimiert“ werden.

Antwort3

Und das habe ich letztendlich gemacht:

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

Ich habe diese Zeile als Eintrag zu den Sitzungs-Apps des Kontos hinzugefügt, mit dem eine Softverknüpfung besteht /etc/guest-session/skel, sodass sie bei jedem Start der Gastsitzung ausgeführt wird.

verwandte Informationen