mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-07-25 03:29:55 +00:00
Added version on dataEngines. Old version no longer recommended
This commit is contained in:
@ -31,16 +31,34 @@ class pyTextWidget(plasmascript.Applet):
|
||||
self.layout.addItem(self.label)
|
||||
self.applet.setLayout(self.layout)
|
||||
|
||||
self.theme = Plasma.Svg(self)
|
||||
self.theme.setImagePath("widgets/background")
|
||||
self.setBackgroundHints(Plasma.Applet.DefaultBackground)
|
||||
|
||||
#initial configuration
|
||||
self.settings = Config(self)
|
||||
self.format = str(self.settings.get('format', '[cpu: $cpu%][temp: $temp°C][mem: $mem%][swap: $swap%][ip: $ip][net: $netKB/s][bat: $bat%]'))
|
||||
self.format = str(self.settings.get('format', '[cpu: $cpu%][temp: $temp°C][mem: $mem%][swap: $swap%][net: $netKB/s][bat: $bat%]'))
|
||||
self.interval = int(self.settings.get('interval', '2000'))
|
||||
self.font_family = str(self.settings.get('font_family', 'Terminus'))
|
||||
self.font_size = int(self.settings.get('font_size', 12))
|
||||
self.font_color = str(self.settings.get('font_color', 'black'))
|
||||
self.font_color = str(self.settings.get('font_color', '#000000'))
|
||||
self.font_style = str(self.settings.get('font_style', 'normal'))
|
||||
self.num_dev = int(self.settings.get('num_dev', 0))
|
||||
|
||||
self.setupNetdev()
|
||||
self.setupTemp()
|
||||
self.connectToEngine()
|
||||
|
||||
self.cpuText = " 0.0"
|
||||
self.up_speed = " 0"
|
||||
self.down_speed = " 0"
|
||||
self.mem_used = 0.0
|
||||
self.mem_free = 1.0
|
||||
self.mem_uf = 0.0
|
||||
self.swap_free = 1.0
|
||||
self.swap_used = 0.0
|
||||
self.tempText = " 0.0"
|
||||
|
||||
self.resize(250,10)
|
||||
|
||||
# start timer
|
||||
@ -55,7 +73,7 @@ class pyTextWidget(plasmascript.Applet):
|
||||
self.interval = int(self.configpage.ui.spinBox_interval.value())
|
||||
self.font_family = str(self.configpage.ui.fontComboBox.currentFont().family())
|
||||
self.font_size = int(self.configpage.ui.spinBox_fontSize.value())
|
||||
self.font_color = str(self.configpage.ui.lineEdit_color.text())
|
||||
self.font_color = str(self.configpage.ui.kcolorcombo.color().name())
|
||||
self.font_style = str(self.configpage.ui.lineEdit_style.text())
|
||||
self.num_dev = int(self.configpage.ui.comboBox_numNet.currentIndex())
|
||||
|
||||
@ -77,11 +95,11 @@ class pyTextWidget(plasmascript.Applet):
|
||||
self.configpage = ConfigWindow(self, self.settings)
|
||||
|
||||
font = QFont(str(self.settings.get('font_family', 'Terminus')), int(self.settings.get('font_size', 12)), int(int(self.settings.get('font_weight', 50))))
|
||||
self.configpage.ui.lineEdit_format.setText(str(self.settings.get('format', '[cpu: $cpu%][temp: $temp°C][mem: $mem%][swap: $swap%][ip: $ip][net: $netKB/s][bat: $bat%]')))
|
||||
self.configpage.ui.lineEdit_format.setText(str(self.settings.get('format', '[cpu: $cpu%][temp: $temp°C][mem: $mem%][swap: $swap%][net: $netKB/s][bat: $bat%]')))
|
||||
self.configpage.ui.spinBox_interval.setValue(int(self.settings.get('interval', '2000')))
|
||||
self.configpage.ui.fontComboBox.setCurrentFont(font)
|
||||
self.configpage.ui.spinBox_fontSize.setValue(int(self.settings.get('font_size', 12)))
|
||||
self.configpage.ui.lineEdit_color.setText(str(self.settings.get('font_color', 'black')))
|
||||
self.configpage.ui.kcolorcombo.setColor(QColor(str(self.settings.get('font_color', '#000000'))))
|
||||
self.configpage.ui.lineEdit_style.setText(str(self.settings.get('font_style', 'normal')))
|
||||
self.configpage.ui.comboBox_numNet.setCurrentIndex(int(self.settings.get('num_dev', 0)))
|
||||
|
||||
@ -96,22 +114,43 @@ class pyTextWidget(plasmascript.Applet):
|
||||
output = self.format
|
||||
|
||||
if (output.split("$cpu")[0] != output):
|
||||
output = output.split("$cpu")[0] + self.cpuText() + output.split("$cpu")[1]
|
||||
output = output.split("$cpu")[0] + self.cpuText + output.split("$cpu")[1]
|
||||
if (output.split("$temp")[0] != output):
|
||||
output = output.split("$temp")[0] + self.tempText() + output.split("$temp")[1]
|
||||
output = output.split("$temp")[0] + self.tempText + output.split("$temp")[1]
|
||||
if (output.split("$mem")[0] != output):
|
||||
output = output.split("$mem")[0] + self.memText() + output.split("$mem")[1]
|
||||
if (output.split("$swap")[0] != output):
|
||||
output = output.split("$swap")[0] + self.swapText() + output.split("$swap")[1]
|
||||
if (output.split("$ip")[0] != output):
|
||||
output = output.split("$ip")[0] + self.ipText() + output.split("$ip")[1]
|
||||
if (output.split("$net")[0] != output):
|
||||
output = output.split("$net")[0] + self.netText() + output.split("$net")[1]
|
||||
print output
|
||||
if (output.split("$bat")[0] != output):
|
||||
output = output.split("$bat")[0] + self.batText() + output.split("$bat")[1]
|
||||
|
||||
return output
|
||||
|
||||
def setupNetdev(self):
|
||||
if (self.num_dev == 0):
|
||||
for line in commands.getoutput("ifconfig -a").split("\n"):
|
||||
if (line != ''):
|
||||
if ((line[0] != ' ') and (line[0:3] != "lo:")):
|
||||
self.netdev = line.split()[0][:-1]
|
||||
else:
|
||||
interfaces = []
|
||||
for line in commands.getoutput("ifconfig -a").split("\n"):
|
||||
if (line != ''):
|
||||
if ((line[0] != ' ') and (line[0:3] != "lo:")):
|
||||
interfaces.append(line.split()[0][:-1])
|
||||
|
||||
command_line = "if ! (ifconfig "+ interfaces[1] + " | grep 'inet ' > /dev/null); then "
|
||||
command_line = command_line + "if ! (ifconfig "+ interfaces[0] + " | grep 'inet ' > /dev/null); then echo lo; "
|
||||
command_line = command_line + "else echo "+ interfaces[0] + "; fi; else echo "+ interfaces[1] + "; fi"
|
||||
self.netdev = commands.getoutput(command_line)
|
||||
|
||||
def setupTemp(self):
|
||||
commandOut = commands.getoutput("sensors | grep Physical -B2")
|
||||
self.tempdev = "lmsensors/"+commandOut.split("\n")[0]+"/"+'_'.join(commandOut.split("\n")[2].split(":")[0].split())
|
||||
|
||||
def showConfigurationInterface(self):
|
||||
"""function to show configuration window"""
|
||||
plasmascript.Applet.showConfigurationInterface(self)
|
||||
@ -139,10 +178,8 @@ class pyTextWidget(plasmascript.Applet):
|
||||
|
||||
def updateLabel(self):
|
||||
"""function to update label"""
|
||||
#string = self.cpuText() + self.tempText()
|
||||
#string = string + self.memText() + self.swapText()
|
||||
#string = string + self.ipText() + self.netText() + self.batText()
|
||||
string = self.formating_line()
|
||||
#string = self.cpuText
|
||||
text = "<html><head/><body style=\" font-family:\'"+ self.font_family +"\'; font-size:"+ str(self.font_size)
|
||||
text = text +"pt; font-style:"+ self.font_style +";\">"
|
||||
text = text + "<p align=\"center\"><span style=\" color:" + self.font_color + ";\"><pre>"+string
|
||||
@ -157,96 +194,67 @@ class pyTextWidget(plasmascript.Applet):
|
||||
|
||||
return output
|
||||
|
||||
def cpuText(self):
|
||||
"""function to set cpu text"""
|
||||
with open ("/proc/stat", 'r') as stat:
|
||||
for line in stat:
|
||||
if (line[0:4] == "cpu "):
|
||||
cpu_1 = line.split()[1:5]
|
||||
time.sleep(0.2)
|
||||
with open ("/proc/stat", 'r') as stat:
|
||||
for line in stat:
|
||||
if (line[0:4] == "cpu "):
|
||||
cpu_2 = line.split()[1:5]
|
||||
duser = float(cpu_2[0]) - float(cpu_1[0])
|
||||
dnice = float(cpu_2[1]) - float(cpu_1[1])
|
||||
dsys = float(cpu_2[2]) - float(cpu_1[2])
|
||||
didle = float(cpu_2[3]) - float(cpu_1[3])
|
||||
full = duser + dnice + dsys + didle
|
||||
cpu = (full-didle) / full * 100
|
||||
output = "%5s" % (str(round(cpu, 1)))
|
||||
|
||||
return output
|
||||
|
||||
def ipText(self):
|
||||
"""function to set ip text"""
|
||||
command_line = "wget http://checkip.dyndns.org/ -q -O - | awk '{print $6}' | sed 's/<.*>//g'"
|
||||
ip = commands.getoutput(command_line)[:-1].split('.')
|
||||
output = "%3s.%3s.%3s.%3s" % (str(ip[0]), str(ip[1]), str(ip[2]), str(ip[3]))
|
||||
|
||||
return output
|
||||
|
||||
def memText(self):
|
||||
"""function to set mem text"""
|
||||
line = commands.getoutput("free | grep Mem:")
|
||||
used = float(line.split()[2]) - float(line.split()[4]) - float(line.split()[5]) - float(line.split()[6])
|
||||
full = float(line.split()[1])
|
||||
mem = 100 * used / full
|
||||
full = self.mem_uf + self.mem_free
|
||||
mem = 100 * self.mem_used / full
|
||||
output = "%5s" % (str(round(mem, 1)))
|
||||
|
||||
return output
|
||||
|
||||
def netText(self):
|
||||
"""function to set netspeed text"""
|
||||
if (self.num_dev == 0):
|
||||
for line in commands.getoutput("ifconfig -a").split("\n"):
|
||||
if (line != ''):
|
||||
if ((line[0] != ' ') and (line[0:3] != "lo:")):
|
||||
netdev = line.split()[0][:-1]
|
||||
else:
|
||||
interfaces = []
|
||||
for line in commands.getoutput("ifconfig -a").split("\n"):
|
||||
if (line != ''):
|
||||
if ((line[0] != ' ') and (line[0:3] != "lo:")):
|
||||
interfaces.append(line.split()[0][:-1])
|
||||
|
||||
command_line = "if ! (ifconfig "+ interfaces[1] + " | grep 'inet ' > /dev/null); then "
|
||||
command_line = command_line + "if ! (ifconfig "+ interfaces[0] + " | grep 'inet ' > /dev/null); then echo lo; "
|
||||
command_line = command_line + "else echo "+ interfaces[0] + "; fi; else echo "+ interfaces[1] + "; fi"
|
||||
netdev = commands.getoutput(command_line)
|
||||
|
||||
command_line = "RXB=$(cat /sys/class/net/" + netdev
|
||||
command_line = command_line + "/statistics/rx_bytes) && TXB=$(cat /sys/class/net/" + netdev
|
||||
command_line = command_line + "/statistics/tx_bytes) && sleep 0.2 && RXBN=$(cat /sys/class/net/" + netdev
|
||||
command_line = command_line + "/statistics/rx_bytes) && TXBN=$(cat /sys/class/net/" + netdev
|
||||
command_line = command_line + "/statistics/tx_bytes) && RXDIF=$(echo $((RXBN - RXB)) ) && TXDIF=$(echo $((TXBN - TXB)) ) "
|
||||
command_line = command_line + "&& echo -en $((10*RXDIF/1024/2)) && echo -n ' / ' && echo -en $((10*TXDIF/1024/2)) && echo ' KB/s'"
|
||||
speed = commands.getoutput(command_line)
|
||||
|
||||
downSpeed = speed.split()[0]
|
||||
upSpeed = speed.split()[2]
|
||||
output = "%4s/%4s" % (downSpeed, upSpeed)
|
||||
output = self.down_speed + "/" + self.up_speed
|
||||
|
||||
return output
|
||||
|
||||
def swapText(self):
|
||||
"""function to set swap text"""
|
||||
line = commands.getoutput("free | grep Swap:")
|
||||
used = float(line.split()[2])
|
||||
full = float(line.split()[1])
|
||||
mem = 100 * used / full
|
||||
full = self.swap_used + self.swap_free
|
||||
mem = 100 * self.swap_used / full
|
||||
output = "%5s" % (str(round(mem, 1)))
|
||||
|
||||
|
||||
return output
|
||||
|
||||
def tempText(self):
|
||||
"""function to set temp text"""
|
||||
commandOut = commands.getoutput("sensors | grep Physical")
|
||||
temp = commandOut[17:21]
|
||||
output = "%4s" % (temp)
|
||||
def connectToEngine(self):
|
||||
"""function to initializate engine"""
|
||||
self.systemmonitor = self.dataEngine("systemmonitor")
|
||||
self.systemmonitor.connectSource("cpu/system/TotalLoad", self, 200)
|
||||
self.systemmonitor.connectSource("network/interfaces/"+self.netdev+"/transmitter/data", self, 200)
|
||||
self.systemmonitor.connectSource("network/interfaces/"+self.netdev+"/receiver/data", self, 200)
|
||||
self.systemmonitor.connectSource(self.tempdev, self, 200)
|
||||
self.systemmonitor.connectSource("mem/physical/free", self, 200)
|
||||
self.systemmonitor.connectSource("mem/physical/used", self, 200)
|
||||
self.systemmonitor.connectSource("mem/physical/application", self, 200)
|
||||
self.systemmonitor.connectSource("mem/swap/free", self, 200)
|
||||
self.systemmonitor.connectSource("mem/swap/used", self, 200)
|
||||
|
||||
@pyqtSignature("dataUpdated(const QString &, const Plasma::DataEngine::Data &)")
|
||||
def dataUpdated(self, sourceName, data):
|
||||
"""function to refresh data"""
|
||||
if (sourceName == "cpu/system/TotalLoad"):
|
||||
value = str(round(float(data[QString(u'value')]), 1))
|
||||
self.cpuText = "%5s" % (value)
|
||||
elif (sourceName == "network/interfaces/"+self.netdev+"/transmitter/data"):
|
||||
value = str(data[QString(u'value')]).split('.')[0]
|
||||
self.up_speed = "%4s" % (value)
|
||||
elif (sourceName == "network/interfaces/"+self.netdev+"/reciever/data"):
|
||||
value = str(data[QString(u'value')]).split('.')[0]
|
||||
self.down_speed = "%4s" % (value)
|
||||
elif (sourceName == self.tempdev):
|
||||
value = str(round(float(data[QString(u'value')]), 1))
|
||||
self.tempText = "%s4" % (value)
|
||||
elif (sourceName == "mem/physical/free"):
|
||||
self.mem_free = float(data[QString(u'value')])
|
||||
elif (sourceName == "mem/physical/used"):
|
||||
self.mem_uf = float(data[QString(u'value')])
|
||||
elif (sourceName == "mem/physical/application"):
|
||||
self.mem_used = float(data[QString(u'value')])
|
||||
elif (sourceName == "mem/swap/free"):
|
||||
self.swap_free = float(data[QString(u'value')])
|
||||
elif (sourceName == "mem/swap/used"):
|
||||
self.swap_used = float(data[QString(u'value')])
|
||||
|
||||
return output
|
||||
|
||||
|
||||
|
||||
def CreateApplet(parent):
|
||||
|
Reference in New Issue
Block a user