DataEngine рдкрд░ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЫреЛрдЯрд╛ рдиреЛрдЯ
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рдИред рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдирдП рд▓реЗрдмрд▓ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: GPU рд▓реЛрдбрд┐рдВрдЧ, GPU рддрд╛рдкрдорд╛рди, HDD рддрд╛рдкрдорд╛рдиред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ ("рдкреНрд▓рд╛рдЬреНрдорд╛ рдЧрд┐рд░ рд░рд╣рд╛ рд╣реИ" ┬й), рдФрд░ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдбрд╛рдВрдбрд╛ рдФрд░ рд╣рд╛рд░реНрд▓реЛрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛рдмрд╛рдЗрди рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рдпрд╛рдж рдХрд┐рдпрд╛ред
DataEngine PyKDE4 рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ (
plasmascript.DataEngine ) рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА, рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИред рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп "рд╢рдмреНрджрдХреЛрд╢реЛрдВ" рд╕рд┐рд╕реНрдЯрдордкреЛрдирд┐рдЯрд░ рдФрд░ рд╕рдордп рд╣реИрдВ, рджреЛрдиреЛрдВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реИред рдореИрдВ рдЕрд╕реНрдкрд╖реНрдЯ рд╢рдВрдХрд╛рдУрдВ рд╕реЗ рддреНрд░рд╕реНрдд рд╣реВрдВ рдХрд┐ рдХреЗрдбреАрдИ 4 рдХрд╛ рдЖрдзрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрд┐рд╕реА рддрд░рд╣ рдЗрди рдмрд╣реБрдд рдбрд╛рдЯрд╛рдмрд╛рдЗрди рдХреЗ рдХрд╛рдо рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЦреБрдж рдХреА DataEngine рдмрдирд╛рдирд╛ рд╣реИред
рдХреМрди рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ, рдореИрдВ рд╣реИрдмрд░рдХрдЯ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред
рд╕рдм рдХреБрдЫ GPU рддрд╛рдкрдорд╛рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рдмрд╛рдХреА рдЫрд╡рд┐ рдФрд░ рд╕рдорд╛рдирддрд╛ рдореЗрдВ рд╣рд╛рде (рдпрд╛ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ) рдХреЗ рдПрдХ рдорд╛рдореВрд▓реА рдЖрдВрджреЛрд▓рди рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдиреАрдЪреЗ рдЙрддрд░реЗрдВред
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ рдХрдХреНрд╖рд╛ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
from PyQt4.QtCore import * from PyKDE4.kdecore import * from PyKDE4 import plasmascript import commands class ExtendedSysMon(plasmascript.DataEngine): def __init__(self, parent, args=None): """dataengine definition""" plasmascript.DataEngine.__init__(self, parent) def init(self): """initialization""" self.setMinimumPollingInterval(333)
рдкрд╣рд▓реЗ рддреАрди рдореЙрдбреНрдпреВрд▓ рдЙрдкрдХрд░рдг (
рдЗрдВрдЬрди ) рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рдЕрдВрддрд┐рдо рддрд╛рдкрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
__Init__ рдореЗрдВ , рд╕рднреА рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣, рд╣рдо рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
Init, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд╣рдо рдПрдордПрд╕ рдореЗрдВ рдиреНрдпреВрдирддрдо рдЕрдиреБрд░реЛрдз рдЕрдВрддрд░рд╛рд▓ (333) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреМрди рд╕реА рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ (рдПрдирд╡реАрдбрд┐рдпрд╛ рдпрд╛ рдПрдЯреАрдЖрдИ)ред рдмреЗрд╢рдХ, рджреВрд╕рд░рд╛ рдмреЗрд╣рддрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд▓реЛ "рд╕рдВрд╕рд╛рдзрди" ("рд╢рдмреНрджрдХреЛрд╢") рдмрдирд╛рдПрдБ:
def sources(self): """create sources""" sources = ["gputemp"] return sources def sourceRequestEvent(self, name): return self.updateSourceEvent(name)
рд╣рдордиреЗ рдЕрдкрдиреЗ
рд╕реНрд░реЛрдд рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ (рдиреАрдЪреЗ рд▓рд┐рдЦрд╛), рд╣рдореЗрдВ рдЕрднреА рднреА рдЙрдирд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
SourceRequestEvent рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реЗ (рдпрд╛ рд╣рдорд╛рд░реЗ рдирд╣реАрдВ) рд╢рдмреНрджрдХреЛрд╢ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╣рдо рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╕рдм рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░реЗрдЧрд╛ (
updateSourceEvent ):
def updateSourceEvent(self, source): """update sources and setup values""" if (source == "gputemp"): if (self.gpudev == 'nvidia'): commandOut = commands.getoutput("nvidia-smi -q -d TEMPERATURE | grep Gpu | tail -n1") try: value = "%4s" % (str(round(float(commandOut.split()[2]), 1))) except: value = " N\A" elif (self.gpudev == 'ati'): commandOut = commands.getoutput("aticonfig --od-gettemperature | grep Temperature | tail -n1") try: value = "%4s" % (str(round(float(commandOut.split()[4]), 1))) except: value = " N\A" else: value = " N\A" self.setData(source, "GPUTemp", QString(value)) return True
рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕рд╣рдЬ рд╣реИред рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдВрдХ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рд╕реЗрд▓реНрдлрд╕реЗрдЯрд╕реЗрдЯ () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ред рдЗрд╕рдХреЗ рддреАрди рдорд╛рдирджрдВрдб рд╣реИрдВ: рд╕реНрд░реЛрдд (рдЬрд┐рд╕ рд╢рдмреНрдж рдХрд╛ рд╣рдо рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, QString), рд╢рдмреНрджрдХреЛрд╢ рдХреБрдВрдЬреА (QString) рдФрд░ рдЗрд╕ рдХреБрдВрдЬреА рдХреЗ рдЕрдиреБрд░реВрдк рдореВрд▓реНрдп (рдЖрдк int рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рддреИрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рдФрд░, рдпрд╣рд╛рдВ QString)ред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐, рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдореЗрдВ, рдХрдИ рдЪрд╛рдмрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ - рдЗрд╕рд▓рд┐рдП рдЖрдк рдПрдЪрдбреАрдбреА рдХреЗ рддрд╛рдкрдорд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ
рд╕реНрд░реЛрдд рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ 3 рдХреБрдВрдЬреА - 3 рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд░ред рдЕрд░реЗ рд╣рд╛рдБ,
рдХреЛрд╢рд┐рд╢ рдХрд░реЛ ... рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ - рдпрд╣ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ / рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдФрд░ рдЗрддрдиреЗ рдкрд░ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдкрд░ рд╕реБрд╕реНрдд рдЬрд╛рдВрдЪ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ
рд╕реНрд░реЛрдд рд╣реЛрдВрдЧреЗ , рддреЛ рд╣рдо
рдЕрдЧрд░ ... рдПрд▓рд┐рдл ... рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред
рдЦреИрд░, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рд╣реИ:
def CreateDataEngine(parent): return ExtendedSysMon(parent)
рдЕрдм рд╣рдо рдЗрд╕реЗ рд╕рднреА рд╕реБрдВрджрд░ рдмрдирд╛рддреЗ рд╣реИрдВ:
$ ls -R extsysmon extsysmon: contents metadata.desktop extsysmon/contents: code extsysmon/contents/code: main.py
рдореБрдЭреЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдВрджреЗрд╣ (рд╕реНрд░реЛрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛) рджреНрд╡рд╛рд░рд╛ рдкреАрдбрд╝рд╛ рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ
рдореЗрдирдбреЛрдореЛ рдХреЛ
рдбрд╛рд▓рддреЗ рд╣реИрдВ , рддреЛ рдХреБрдЫ рднреА рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдФрд░
metadata.desktop рдмрдирд╛рдПрдВ:
[Desktop Entry] Encoding=UTF-8 Name=Extended SystemMonitor DataEngine Comment=Adds gpu, gputemp and hddtemp to DataEngine ServiceTypes=Plasma/DataEngine Type=Service Icon=utilities-system-monitor X-Plasma-API=python X-Plasma-MainScript=code/main.py X-KDE-PluginInfo-Author=%username% X-KDE-PluginInfo-Email=%e-mail% X-KDE-PluginInfo-Name=ext-sysmon X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-Website=http://kde-look.org/ X-KDE-PluginInfo-Category=System Information X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=true
рдлрдВрдбрд╛рдореЗрдВрдЯрд▓ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпрд╣рд╛рдБ
рд╕рд░реНрд╡рд┐рд╕рдЯреЗрдк ,
рдПрдХреНрд╕-рдкреНрд▓рд╛рдЬрд╝реНрдорд╛-рдПрдкреАрдЖрдИ ,
рдПрдХреНрд╕-рдкреНрд▓рд╛рдЬрд╝реНрдорд╛-рдореЗрдирд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ ред рдкрд╣рд▓рд╛ (DataEngine) рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рд╢реЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреАрд╕рд░рд╛ рдореВрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдмрд╛рдХреА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЕрдиреНрдпрддреНрд░ред
рд╕рдВрдЧреНрд░рд╣ (рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ):
zip -qr extsysmon.zip contents metadata.desktop
рд╕реЗрдЯ рдХрд░реЗрдВ:
plasmapkg -t dataengine -i extsysmon.zip
рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдХрд╛рд░ (
-t dataengine ) рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╡рд┐рдЬреЗрдЯ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред
...
рд▓рд╛рдн!
рд╕реБрдВрджрд░ рдЪрд┐рддреНрд░, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

рдореИрдВ GPU рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдХреЛрдИ GPU рддрд╛рдкрдорд╛рди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрд╕рддрдд рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛рд░реНрдб рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб
github рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдХрд┐рд╕реА рдЯреВрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛
рдкрд╣рд▓реЗ рдиреЛрдЯ рдореЗрдВ рд╣реИ ред