annotate service/xidle/xidle.py @ 53:0141467893bf

new xidle service Ignore-this: 25b08dbb9d16d98ddc53dc079e030248
author drewp@bigasterisk.com
date Wed, 09 Jan 2013 20:22:51 -0800
parents
children 98c1cdd42bce
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
53
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
1 #!bin/python
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
2
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
3 """
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
4 X server idle time is now available over http!
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
5 """
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
6
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
7 from bottle import run, get, put, request, response
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
8 import subprocess, sys, socket
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
9 from rdflib import Namespace, URIRef, Literal
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
10
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
11 # from http://bebop.bigasterisk.com/python/
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
12 import xss
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
13 # another option: http://thp.io/2007/09/x11-idle-time-and-focused-window-in.html
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
14
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
15 DEV = Namespace("http://projects.bigasterisk.com/device/")
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
16 ROOM = Namespace("http://projects.bigasterisk.com/room/")
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
17
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
18 sys.path.append("/my/site/magma")
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
19 from stategraph import StateGraph
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
20
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
21 host = socket.gethostname()
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
22
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
23 @get("/")
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
24 def index():
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
25 xss.get_info() # fail if we can't get the display or something
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
26 return '''
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
27 Get the <a href="idle">X idle time</a> on %s.
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
28 <a href="graph">rdf graph</a> available.''' % host
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
29
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
30 @get("/idle")
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
31 def monitor():
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
32 return {"idleMs" : xss.get_info().idle}
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
33
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
34 @get("/graph")
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
35 def graph():
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
36 g = StateGraph(ctx=DEV['xidle/%s' % host])
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
37 g.add((URIRef("http://bigasterisk.com/host/%s/xidle" % host),
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
38 ROOM['idleTimeMs'],
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
39 Literal(xss.get_info().idle)))
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
40
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
41 response.set_header('Content-type', 'application/x-trig')
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
42 return g.asTrig()
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
43
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
44 run(host="0.0.0.0", server='gunicorn', port=9107, quiet=True)
0141467893bf new xidle service
drewp@bigasterisk.com
parents:
diff changeset
45