You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.8 KiB

#!/usr/bin/python
import socket
import json
from gi.repository import Gtk, Gdk, GObject
class MenuExampleWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Sys Monitor")
self.set_default_size(500, 500)
action_group = Gtk.ActionGroup("my_actions")
table = Gtk.Table(3,3,True)
self.add(table)
title = Gtk.Label("Current Stats")
cpu_title = Gtk.Label("CPU:")
mem_title = Gtk.Label("Mem:")
cpu_data = Gtk.Label()
mem_data = Gtk.Label()
table.attach(title,0,3,0,1)
table.attach(cpu_title,0,1,1,2)
table.attach(mem_title,0,1,2,3)
table.attach(cpu_data,1,3,1,2)
table.attach(mem_data,1,3,2,3)
self.stats = dict()
self.stats["Cpu"] = cpu_data
self.stats["Memory"] = mem_data
self.timeout_id = GObject.timeout_add(100, self.on_timeout, None)
self.activity_mode = False
def create_ui_manager(self):
uimanager = Gtk.UIManager()
# Throws exception if something went wrong
uimanager.add_ui_from_string(UI_INFO)
# Add the accelerator group to the toplevel window
accelgroup = uimanager.get_accel_group()
self.add_accel_group(accelgroup)
return uimanager
def on_timeout(self, data):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('', 6000))
data = sock.recv(10000)
sock.close()
#print data
stats = json.loads(data)
#for stat in stats["Stats"]:
# self.stats[stat["type"]].set_label("%f"%stat["value"])
for k in stats:
v = stats[k]
if type(v) is list:
for i in range(0,len(v)):
print "%s[%d]: %f" % (k, i, v[i]['percent'])
else :
print "%s: %f" % (k,v['percent'])
return True
window = MenuExampleWindow()
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()