59 lines
1.4 KiB
Python
59 lines
1.4 KiB
Python
# This python file use the following encoding: utf-8
|
|
|
|
import psutil
|
|
|
|
import e
|
|
|
|
from efl import ecore
|
|
from efl import evas
|
|
from efl import edje
|
|
|
|
|
|
__gadget_name__ = 'Memory Monitor'
|
|
__gadget_vers__ = '0.1'
|
|
__gadget_auth__ = 'DaveMDS'
|
|
__gadget_mail__ = 'dave@gurumeditation.it'
|
|
__gadget_desc__ = 'Ram + Swap monitor'
|
|
__gadget_vapi__ = 1
|
|
__gadget_opts__ = { 'popup_on_desktop': False }
|
|
|
|
|
|
|
|
class Gadget(e.Gadget):
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
self.poller = None
|
|
self.mem = 0
|
|
self.swp = 0
|
|
|
|
def instance_created(self, obj, site):
|
|
super().instance_created(obj, site)
|
|
|
|
obj.size_hint_aspect = (evas.EVAS_ASPECT_CONTROL_BOTH,
|
|
int(obj.data_get('aspect_w')),
|
|
int(obj.data_get('aspect_h')))
|
|
|
|
if self.poller is None:
|
|
self.poller = ecore.Poller(8, self.poller_cb, ecore.ECORE_POLLER_CORE)
|
|
|
|
def instance_destroyed(self, obj):
|
|
super().instance_destroyed(obj)
|
|
|
|
if len(self._instances) < 1 and self.poller is not None:
|
|
self.poller.delete()
|
|
self.poller = None
|
|
|
|
def poller_cb(self):
|
|
mem = psutil.virtual_memory().percent
|
|
swp = psutil.swap_memory().percent
|
|
|
|
if mem != self.mem or swp != self.swp:
|
|
for obj in self._instances:
|
|
obj.message_send(0, (mem, swp))
|
|
self.mem = mem
|
|
self.swp = swp
|
|
|
|
return ecore.ECORE_CALLBACK_RENEW
|