Hola que tal

La cuestion es la siguiente: busco un screenlet demasiado personalizado. Mejor que describirlo, será dejar una imagen, que vale más que mil palabras:



Esa sería la estetica que quiero lograr. Sin embargo, como habrán notado, la info que el screenlet muestra es la de HD, no la de la RAM. Eso se debe a que lo q hice fue editar el icono del HD para poner el de una placa RAM. Entonces, lo q ahora quiero hacer es editar lo q falta, osea, hacer que el screenlet muestre la cantidad de memoria ram en uso en vez de la cantidad de espacio ocupado de HD.

Alguien sabe cómo hacer eso?

El archivo ".py" del screenlet contiene lo siguiente:
Code:
#!/usr/bin/env python

# This application is released under the GNU General Public License 
# v3 (or, at your option, any later version). You can find the full 
# text of the license under http://www.gnu.org/licenses/gpl.txt. 
# By using, editing and/or distributing this software you agree to 
# the terms and conditions of this license. 
# Thank you for using free software!

#DiskusageScreenlet (c) Whise <helder.fraga@hotmail.com>


import screenlets
from screenlets.options import FloatOption, BoolOption, StringOption
from screenlets.options import create_option_from_node
import cairo
import pango
import subprocess
import re
import gobject


class DiskusageScreenlet(screenlets.Screenlet):
	"""A Diskusage Screenlet by Helder Fraga based on Jonathan Rauprich Disk screenlet."""
	
	# default meta-info for Screenlets
	__name__ = 'DiskusageScreenlet'
	__version__ = '0.3'
	__author__ = 'Helder Fraga'
	__desc__ = __doc__

	# internals
	__timeout = None
	p_layout = None	
	# settings
	update_interval = 20.0
	mount_point = '/'
	
	# constructor
	def __init__(self, **keyword_args):
		#call super
		screenlets.Screenlet.__init__(self, width=220, height=50,uses_theme=True, **keyword_args)
		# set theme
		self.theme_name = "default"
		# add options
		self.add_options_group('Disk-Usage', 'Disk-Usage specific options')
		self.add_option(FloatOption('Disk-Usage', 'update_interval', 
			self.update_interval, 'Update-Interval', 
			'The interval for updating the Disk-Usage (in seconds) ...',
			min=1.0, max=60.0))
		self.add_option(StringOption('Disk-Usage', 'mount_point', 
			self.mount_point, 'Mount Point', 
			'Enter the Mountpoint for the Device you want to show'), 
			realtime=False)
		# init the timeout function
		self.update_interval = self.update_interval
		

	# attribute-"setter", handles setting of attributes
	def __setattr__(self, name, value):
		# call Screenlet.__setattr__ in baseclass (ESSENTIAL!!!!)
		screenlets.Screenlet.__setattr__(self, name, value)
		# check for this Screenlet's attributes, we are interested in:
		if name == "update_interval":
			if value > 0:
				self.__dict__['update_interval'] = value
				if self.__timeout:
					gobject.source_remove(self.__timeout)
				self.__timeout = gobject.timeout_add(int(value * 1000), self.update_graph)
			else:
				# TODO: raise exception!!!
				self.__dict__['update_interval'] = 1
				pass
	def on_init (self):
		print "Screenlet has been initialized."
		# add default menuitems
		self.add_default_menuitems()
	
	#function to get a list of dictionaries with device information
	#written by me
	def get_drive_info(self):
		proc = subprocess.Popen('df -h -a -P | grep ^/dev/ ', shell='true', stdout=subprocess.PIPE)
		sdevs = proc.stdout.read().rsplit('\n')
		sdevs.pop()
		for stdev in sdevs:
			sdev = re.findall("(\S*)\s*", stdev)
			dev = {
				'device': sdev[0],
				'size': sdev[1],
				'used': sdev[2],
				'free': sdev[3],
				'quota': sdev[4],
				'mount': sdev[5]
			}
			if dev['mount'] == self.mount_point:
				#print  sdev[3] + sdev[4] + sdev[5]
				return dev

		return None
	
	# timeout-function
	def update_graph(self):
		self.redraw_canvas()
		return True
	
	def on_draw(self, ctx):
		# get load
		info= self.get_drive_info()
		load= int(info['quota'].replace("%",""))
		print load
		if load > 99:
			load = 99
		elif load < 0:
			load=0
		# set size
		#ctx.scale(self.width/100.0, self.height/100.0)
		ctx.scale(self.scale, self.scale)
		ctx.set_operator(cairo.OPERATOR_OVER)
		# draw bg (if theme available)
		#ctx.set_operator(cairo.OPERATOR_OVER)
		if self.theme:
			self.theme['disk-bg.svg'].render_cairo(ctx)
		
		# draw cpu-graph

		# draw text
		
		
		ctx.save()

		ctx.translate(60, 8)

		if self.p_layout == None :
	
			self.p_layout = ctx.create_layout()
		else:
			
			ctx.update_layout(self.p_layout)
		p_fdesc = pango.FontDescription()
		#p_fdesc = pango.FontDescription("Free Sans 8")
		p_fdesc.set_family_static("Free Sans")
		p_fdesc.set_size(10*pango.SCALE)
		self.p_layout.set_font_description(p_fdesc)
		#p_layout.set_width((self.width) * pango.SCALE)
		if len(str(load))==1:
			load = "0" + str(load)
		self.p_layout.set_markup("<b>" + info['mount']  + "</b>\n <b>" +   info['free'] + "</b> free of <b>" + info['size'] + " - " + info['quota']+"</b>")
		ctx.set_source_rgba(1, 1, 1, 1)
		ctx.show_layout(self.p_layout)
		ctx.fill()
		ctx.restore()
		ctx.save()

		# draw glass (if theme available)
		if self.theme:
			#self.theme['cpumeter-graph-bg.svg'].render_cairo(ctx)
			w = (float(load) / 100.0) * 220.0
			#print "width: "+str(w)
			# get step
			#steps_height = 7
			#h = 40
			ctx.save()
			ctx.rectangle(0, 0, w, 50)
			#ctx.rectangle(20, 15+(70-h), 60, h)
			ctx.translate(25, 35)
			ctx.clip()
			#ctx.new_path()
			self.theme['disk-gauge.svg'].render_cairo(ctx)
			ctx.restore()
		if self.theme:
			try:
			
				self.theme['disk-glow.svg'].render_cairo(ctx)
			except Exception, ex:
				print 'no glass '			
			
			self.theme.render(ctx, 'drive2')
		
	def on_draw_shape(self,ctx):

		if self.theme:
			self.on_draw(ctx)
	
# If the program is run directly or passed as an argument to the python
# interpreter then create a Screenlet instance and show it
if __name__ == "__main__":
	import screenlets.session
	screenlets.session.create_session(DiskusageScreenlet)