#infos for disk not only in MB import statvfs import os import karamba textfont='Sans' textsize=12 lineheight = 13 text_x = 50 text_x2 = 100 text_y = 190 text_list = [] def human_readable(value): if value >= (1024**4): return "%.2f To" % (value/(1024.0**4)) if value >= (1024**3): return "%.2f Go" % (value/(1024.0**3)) if value >= (1024**2): return "%.2f Mo" % (value/(1024.0**2)) if value >= 1024: return "%.2f Ko" % (value/1024.0) else : return "%i o" % value listdev = ["/", "/mnt/debian", "/mnt/win_c", "/mnt/win_d", "/mnt/win_e"] listname = ["Fedora:", "Debian:", "Win_C:", "Win_D:", "Win_E:"] nbdev = len(listdev) #this is called when you widget is initialized def initWidget(widget): global textfont, textsize, textcolor global listdev, listname global nbdev ypos = text_y for dev in range(nbdev): textnames = karamba.createText(widget, text_x, ypos, 50, lineheight, ' ') karamba.changeTextColor(widget, textnames, 255, 255, 255) karamba.changeTextSize(widget, textnames, textsize ) karamba.changeTextFont(widget, textnames, textfont ) karamba.changeText(widget, textnames, str(listname[dev])) textinfos = karamba.createText(widget, text_x2, ypos, 150, lineheight, ' ') karamba.changeTextColor(widget, textinfos, 255, 255, 255) karamba.changeTextSize(widget, textinfos, textsize ) karamba.changeTextFont(widget, textinfos, textfont ) text_list.append(textinfos) ypos = ypos + lineheight # print listname[dev], human_readable(used), "/", human_readable(total), " ("+str(percent)+"%)" pass #this is called everytime your widget is updated #the update inverval is specified in the .theme file def widgetUpdated(widget): global text_list for dev in range(nbdev): infos = os.statvfs(listdev[dev]) total = infos[statvfs.F_FRSIZE] * infos[statvfs.F_BLOCKS] used = total - infos[statvfs.F_FRSIZE] * infos[statvfs.F_BFREE] percent = 100 * used / total karamba.changeText(widget, text_list[dev], str(human_readable(used))+" / "+str(human_readable(total))+" ("+str(percent)+"%)") pass