2016-10-11 1 views
0

ich python3 bin mit und ich bin in der Lage, die Mausposition erhalten unter Verwendung der folgenden Codes in Centos 7:Python Get Mausposition in einem Cron-Skript

from Xlib import display 
data = display.Display().screen().root.query_pointer()._data 
data["root_x"], data["root_y"] 

Allerdings, wenn ich das Skript crontab verwenden, ist es zeigt die folgende Ausnahme: Xlib.error.DisplayNameError: Ungültiger Anzeigename ""

Gibt es eine Möglichkeit, die Mausposition mit Python und Cron-Job zu erhalten?

+0

Mit einem Cron-Job wird es hackish sein, vorausgesetzt, Sie können es überhaupt funktionieren. Ich würde versuchen, pro Benutzer Systemd Jobs zu sehen. Systemd kann zeitgesteuerte Slices ausführen, die eine Obermenge von Cron-Features sind. Und Prozesse, die von Benutzer-Systemd ausgeführt werden, haben normalerweise Zugriff auf Anzeige- und Sicherheits-Cookies für den Zugriff auf den X-Server (abhängig von der Distro-Einrichtung). – spectras

Antwort

0

Dies liegt daran, dass die Umgebungsvariable DISPLAY während der Ausführung Ihres Python-Skripts nicht ordnungsgemäß festgelegt wurde. Versuchen Sie, die folgende Zeile am Anfang Ihres Python-Skript hinzufügen, zum Beispiel:

import os 
os.environ['DISPLAY'] = ':0.0' # the value should match your setting 
+1

Auf einem Einzelbenutzersystem hat dies manchmal eine gewisse Chance, korrekt zu arbeiten. Im allgemeinen Fall gibt es keine Garantie dafür, dass ': 0.0 'dem Benutzer gehört, dessen' crontab 'ausgeführt wird, oder dass ein' DISPLAY 'vorhanden ist (der Benutzer ist möglicherweise überhaupt nicht mit einer interaktiven Sitzung angemeldet). . Auf einem ordnungsgemäß gesicherten System wird es auch ein Privilegierungsproblem geben - Programme außerhalb der interaktiven Sitzung sollten grundsätzlich nicht in der Lage sein, sich mit den privaten Teilen der interaktiven Sitzung zu messen. – tripleee