Add a new ram+swap gadget
screenshot and info at: https://phab.enlightenment.org/w/emodules/edgar/
This commit is contained in:
parent
caa232dcc0
commit
81bda2a9ce
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* EDGAR Dropbox Gadget
|
||||
* EDGAR Multicore CPU Gadget
|
||||
*/
|
||||
|
||||
#define DBG_SHOW(_PART, _R, _G, _B) \
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,36 @@
|
|||
# Simple Makefile for Enlightenment (edgar) gadgets
|
||||
|
||||
# gadget specific config
|
||||
GADGET_NAME = mem
|
||||
EXTRA_FILES =
|
||||
|
||||
|
||||
# nothing should be changed below this point
|
||||
GADGET_FILES = __init__.pyc $(GADGET_NAME).edj
|
||||
prefix = $(shell pkg-config --variable=libdir enlightenment)
|
||||
gadget_folder = ${prefix}/enlightenment/gadgets/$(GADGET_NAME)
|
||||
|
||||
.PHONY: all install clean
|
||||
|
||||
all: $(GADGET_FILES) $(EXTRA_FILES)
|
||||
|
||||
install: all
|
||||
@mkdir -p -v ${gadget_folder}
|
||||
@cp --preserve=mode -v $(GADGET_FILES) $(EXTRA_FILES) $(gadget_folder)
|
||||
|
||||
uninstall: all
|
||||
@rm -rfv ${gadget_folder}
|
||||
|
||||
clean:
|
||||
@rm -fv *.edj *.pyc
|
||||
|
||||
|
||||
EDJE_CC = edje_cc
|
||||
EDJE_FLAGS = -v -id images/ -fd fonts/
|
||||
|
||||
%.edj: %.edc images/*
|
||||
$(EDJE_CC) $(EDJE_FLAGS) $<
|
||||
@chmod -v og+r $@
|
||||
|
||||
%.pyc: %.py
|
||||
python3 -c "from py_compile import compile; compile('$<', '$@')"
|
|
@ -0,0 +1,58 @@
|
|||
# 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
|
Binary file not shown.
After Width: | Height: | Size: 274 B |
Binary file not shown.
After Width: | Height: | Size: 286 B |
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,154 @@
|
|||
/**
|
||||
* EDGAR Memory + Swap Gadget
|
||||
*/
|
||||
|
||||
#define DBG_SHOW(_PART, _R, _G, _B) \
|
||||
part { name: "dbg_show"_PART; \
|
||||
type: RECT; mouse_events: 0; \
|
||||
description { state: "default" 0.0; \
|
||||
rel1.to: _PART; rel2.to: _PART; \
|
||||
color: _R _G _B 50; } }
|
||||
|
||||
#define SHOW(_PART) DBG_SHOW(_PART, 50, 0, 0)
|
||||
|
||||
images {
|
||||
image: "mem.png" COMP;
|
||||
image: "bar_bg.png" COMP;
|
||||
image: "blu_on.png" COMP;
|
||||
}
|
||||
|
||||
|
||||
collections {
|
||||
/**
|
||||
* API [e/gadget/icon] The group used for the icon of the gadget
|
||||
*/
|
||||
group { name: "e/gadgets/mem/icon";
|
||||
parts {
|
||||
image { "icon";
|
||||
desc { "default";
|
||||
aspect: 1.0 1.0;
|
||||
aspect_preference: BOTH;
|
||||
image.normal: "mem.png";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* API [e/gadget/main] The main group of the gadget
|
||||
*/
|
||||
group { name: "e/gadgets/mem/main";
|
||||
data {
|
||||
item: "aspect_w" "28";
|
||||
item: "aspect_h" "56";
|
||||
}
|
||||
script {
|
||||
public message(Msg_Type:type, id, ...) {
|
||||
if ((type == MSG_FLOAT_SET) && (id == 0)) {
|
||||
new Float:val;
|
||||
|
||||
val = getfarg(2);
|
||||
if (val > (100 / 9 * 1)) set_state(PART:"mem_led1", "on", 0.0);
|
||||
else set_state(PART:"mem_led1", "default", 0.0);
|
||||
if (val > (100 / 9 * 2)) set_state(PART:"mem_led2", "on", 0.0);
|
||||
else set_state(PART:"mem_led2", "default", 0.0);
|
||||
if (val > (100 / 9 * 3)) set_state(PART:"mem_led3", "on", 0.0);
|
||||
else set_state(PART:"mem_led3", "default", 0.0);
|
||||
if (val > (100 / 9 * 4)) set_state(PART:"mem_led4", "on", 0.0);
|
||||
else set_state(PART:"mem_led4", "default", 0.0);
|
||||
if (val > (100 / 9 * 5)) set_state(PART:"mem_led5", "on", 0.0);
|
||||
else set_state(PART:"mem_led5", "default", 0.0);
|
||||
if (val > (100 / 9 * 6)) set_state(PART:"mem_led6", "on", 0.0);
|
||||
else set_state(PART:"mem_led6", "default", 0.0);
|
||||
if (val > (100 / 9 * 7)) set_state(PART:"mem_led7", "on", 0.0);
|
||||
else set_state(PART:"mem_led7", "default", 0.0);
|
||||
if (val > (100 / 9 * 8)) set_state(PART:"mem_led8", "on", 0.0);
|
||||
else set_state(PART:"mem_led8", "default", 0.0);
|
||||
|
||||
val = getfarg(3);
|
||||
if (val > (100 / 9 * 1)) set_state(PART:"swp_led1", "on", 0.0);
|
||||
else set_state(PART:"swp_led1", "default", 0.0);
|
||||
if (val > (100 / 9 * 2)) set_state(PART:"swp_led2", "on", 0.0);
|
||||
else set_state(PART:"swp_led2", "default", 0.0);
|
||||
if (val > (100 / 9 * 3)) set_state(PART:"swp_led3", "on", 0.0);
|
||||
else set_state(PART:"swp_led3", "default", 0.0);
|
||||
if (val > (100 / 9 * 4)) set_state(PART:"swp_led4", "on", 0.0);
|
||||
else set_state(PART:"swp_led4", "default", 0.0);
|
||||
if (val > (100 / 9 * 5)) set_state(PART:"swp_led5", "on", 0.0);
|
||||
else set_state(PART:"swp_led5", "default", 0.0);
|
||||
if (val > (100 / 9 * 6)) set_state(PART:"swp_led6", "on", 0.0);
|
||||
else set_state(PART:"swp_led6", "default", 0.0);
|
||||
if (val > (100 / 9 * 7)) set_state(PART:"swp_led7", "on", 0.0);
|
||||
else set_state(PART:"swp_led7", "default", 0.0);
|
||||
if (val > (100 / 9 * 8)) set_state(PART:"swp_led8", "on", 0.0);
|
||||
else set_state(PART:"swp_led8", "default", 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
parts {
|
||||
#define LED(_name_, _pos_) \
|
||||
part { name: _name_; \
|
||||
desc { "default"; hid; \
|
||||
rel1.relative: 0.0 (1.0 / 8 * (_pos_ - 1)); \
|
||||
rel2.relative: 1.0 (1.0 / 8 * _pos_); \
|
||||
image.normal: "blu_on.png"; \
|
||||
} \
|
||||
desc { "on"; inherit: "default"; vis; } \
|
||||
} \
|
||||
|
||||
part { name: "mem";
|
||||
desc { "default";
|
||||
rel1.relative: 0.0 0.0;
|
||||
rel2.relative: 0.5 1.0;
|
||||
image.normal: "bar_bg.png";
|
||||
}
|
||||
LED("mem_led1", 8)
|
||||
LED("mem_led2", 7)
|
||||
LED("mem_led3", 6)
|
||||
LED("mem_led4", 5)
|
||||
LED("mem_led5", 4)
|
||||
LED("mem_led6", 3)
|
||||
LED("mem_led7", 2)
|
||||
LED("mem_led8", 1)
|
||||
}
|
||||
|
||||
part { name: "swp";
|
||||
desc { "default";
|
||||
rel1.relative: 0.5 0.0;
|
||||
rel2.relative: 1.0 1.0;
|
||||
image.normal: "bar_bg.png";
|
||||
}
|
||||
LED("swp_led1", 8)
|
||||
LED("swp_led2", 7)
|
||||
LED("swp_led3", 6)
|
||||
LED("swp_led4", 5)
|
||||
LED("swp_led5", 4)
|
||||
LED("swp_led6", 3)
|
||||
LED("swp_led7", 2)
|
||||
LED("swp_led8", 1)
|
||||
}
|
||||
|
||||
#undef LED
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* API [e/gadget/popup] This is the group that will be placed inside popups
|
||||
*/
|
||||
/*
|
||||
group { name: "e/gadgets/mem/popup";
|
||||
min: 310 0;
|
||||
parts {
|
||||
box { "popup.box";
|
||||
desc { "default";
|
||||
box {
|
||||
layout: "vertical";
|
||||
padding: 0 6;
|
||||
min: 1 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
Loading…
Reference in New Issue