#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Imports (Global) import dbus, signal, sys from PyQt5.QtCore import QCoreApplication, QObject # DBus class DBus(object): __slots__ = [ 'bus', 'jack' ] DBus = DBus() DBus.bus = None DBus.jack = None def appQuit(sig, frame): app.exit(0) # Main Application class CadenceUnityApp(QObject): def __init__(self, parent=None): QObject.__init__(self, parent) self.m_lastLoad = None self.m_lastXruns = None self.m_timerDBus = self.startTimer(5000) self.m_timerLauncher = self.startTimer(1000) self.timerCheckDBus() self.timerCheckLauncher() def refreshDBus(self): DBus.bus = dbus.SessionBus() try: DBus.jack = DBus.bus.get_object("org.jackaudio.service", "/org/jackaudio/Controller") except: DBus.jack = None def jackGetLoad(self): if DBus.jack: try: return DBus.jack.GetLoad() except: DBus.jack = None return None else: return None def jackGetXruns(self): if DBus.jack: try: return DBus.jack.GetXruns() except: DBus.jack = None return None else: return None def timerCheckDBus(self): if not DBus.jack: self.refreshDBus() def timerCheckLauncher(self): load = self.jackGetLoad() xruns = self.jackGetXruns() if load != self.m_lastLoad: if load != None: launcher.set_property("progress", load/100) launcher.set_property("progress_visible", True) else: launcher.set_property("progress", 0.0) launcher.set_property("progress_visible", False) if xruns != self.m_lastXruns: if xruns != None: launcher.set_property("count", xruns) launcher.set_property("count_visible", True) else: launcher.set_property("count", 0) launcher.set_property("count_visible", False) self.m_lastLoad = load self.m_lastXruns = xruns def timerEvent(self, event): if event.timerId() == self.m_timerDBus: self.timerCheckDBus() elif event.timerId() == self.m_timerLauncher: self.timerCheckLauncher() QObject.timerEvent(self, event) #--------------- main ------------------ if __name__ == '__main__': # Imports (Unity) from gi import require_version as gi_require_version gi_require_version('Unity', '7.0') from gi.repository import Unity # App initialization app = QCoreApplication(sys.argv) app.setApplicationName("Cadence-Unity-Support") app.setApplicationVersion("0.5.0") app.setOrganizationName("Cadence") launcher = Unity.LauncherEntry.get_for_desktop_id("cadence.desktop") qtLoop = CadenceUnityApp() signal.signal(signal.SIGTERM, appQuit) signal.signal(signal.SIGINT, appQuit) # App-Loop sys.exit(app.exec_())