#!/usr/bin/python3 # mambatray 2 # Copyright (C) 2011-2022 by Silvan Calarco # Copyright (C) 2011 by michiamophil # Distributed under the terms of the GPL version 3 FLOSS License # import sys import os import gettext import libproxy import distro from PyQt5 import uic from PyQt5.QtCore import pyqtSignal, Qt from PyQt5.QtGui import QIcon, QCursor from PyQt5.QtWidgets import QSystemTrayIcon, QApplication, QMenu, QMainWindow,\ QMessageBox, QWidget from PyQt5.QtCore import QTimer, QProcess DATADIR = os.path.dirname(os.path.realpath((__file__))) + "/" class SystemTrayIcon(QSystemTrayIcon): menu = None def __init__(self, icon, parent=None): QSystemTrayIcon.__init__(self, icon, parent) global w, contatore, srpm, lista, NetsrpmsArg, nOre, desktop_session nOre = 2 srpm = [ "skype", "win32codecs", "msttcorefonts", "b43-firmware", "virtualbox-extension-pack", "chromium-widevine", "spotify" ] NetsrpmsArg = "-c" lista = [] contatore = 0 w = parent self.menu = QMenu(parent) try: desktop_session = os.path.basename(os.getenv('DESKTOP_SESSION')) except: desktop_session = 'default' if desktop_session == 'default': desktop_session = 'plasma' elif desktop_session[:3] == 'kde': desktop_session = 'kde' # refresh packages cache timer global refreshPackagesTimer, refreshPackagesCacheProcess,\ checkSRPMSUpdatesTimer, SRPMUpdateProcess, networkOnlineProcess refreshPackagesTimer = QTimer(self) checkSRPMSUpdatesTimer = QTimer(self) refreshPackagesCacheProcess = QProcess(self) SRPMUpdateProcess = QProcess(self) networkOnlineProcess = QProcess(self) refreshPackagesTimer.timeout.connect(self.refreshPackagesCache) refreshPackagesCacheProcess.finished.connect(self.restartRefreshPackagesTimer) checkSRPMSUpdatesTimer.timeout.connect(self.SRPMSCheckUpgradeList) # software menu global softwareManagerProcess, softwareCheckUpgradesProcess,\ softwareBaseInstallsProcess softwareManagerProcess = QProcess(self) softwareCheckUpgradesProcess = QProcess(self) softwareBaseInstallsProcess = QProcess(self) softwareMenu = self.menu.addMenu(QIcon.fromTheme("applications-system"),_("Software")) softwareManageAction = softwareMenu.addAction(QIcon.fromTheme("applications-other"),_("Add/Remove software packages...")) softwareManageAction.triggered.connect(self.softwareManager) softwareCheckUpgradesAction = softwareMenu.addAction(QIcon.fromTheme("system-software-update"),_("Check for updates now...")) softwareCheckUpgradesAction.triggered.connect(self.softwareCheckUpgrades) softwareBaseInstallsAction = softwareMenu.addAction(QIcon.fromTheme("mambabase"),_("{} components...").format(distro.name())) softwareBaseInstallsAction.triggered.connect(self.softwareBaseInstalls) # network menu global networkFirewallDisableProcess, networkFirewallEnableProcess,\ networkFirewallConfigureProcess, networkProxyProcess networkFirewallDisableProcess = QProcess(self) networkFirewallEnableProcess = QProcess(self) networkFirewallConfigureProcess = QProcess(self) networkProxyProcess = QProcess(self) networkMenu = self.menu.addMenu(QIcon.fromTheme("preferences-system-network"), _("Network")) networkFirewallMenu = networkMenu.addMenu(QIcon.fromTheme("security-medium"),_("Firewall")) networkFirewallDisableAction = networkFirewallMenu.addAction(QIcon.fromTheme("security-low"),_("Disable")) networkFirewallDisableAction.triggered.connect(self.networkFirewallDisable) networkFirewallDisableProcess.finished.connect(self.networkFirewallDisableMessage) networkFirewallEnableAction = networkFirewallMenu.addAction(QIcon.fromTheme("security-high"),_("Enable")) networkFirewallEnableAction.triggered.connect(self.networkFirewallEnable) networkFirewallEnableProcess.finished.connect(self.networkFirewallEnableMessage) networkFirewallConfigureAction = networkFirewallMenu.addAction(QIcon.fromTheme("security-medium"),_("Configure...")) networkFirewallConfigureAction.triggered.connect(self.networkFirewallConfigure) networkProxyAction = networkMenu.addAction(QIcon.fromTheme("network-server"),_("Proxy...")) networkProxyAction.triggered.connect(self.networkProxy) SRPMUpdateProcess.finished.connect(self.SRPMSCheckUpgrade) # about box aboutAction = self.menu.addSeparator() aboutAction = self.menu.addAction(QIcon.fromTheme("system-logo"),_("About")) aboutAction.triggered.connect(self.about) self.setToolTip(_("{} control center").format(distro.name())) self.activated.connect(self.iconActivated) self.setContextMenu(self.menu) self.show() # the first time refresh packages cache after 5 minutes refreshPackagesTimer.start( 5 * 60000 ) # the first time check for SRPMS updates after 4 minutes checkSRPMSUpdatesTimer.start( 4 * 60000 ) def setProxyForSmart(self): setProxyProcess = QProcess(self) pf = libproxy.ProxyFactory() for protocol in ["http","https","ftp"]: proxies = pf.getProxies("%s://openmamba.org" % protocol) for proxy in proxies: if proxy == "direct://": setProxyProcess.execute("smart",['config','--remove','%s_proxy' % protocol]) break else: setProxyProcess.execute("smart",['config','--set','%s_proxy=%s' %(protocol,proxy)]) break def iconActivated(self, reason): if reason in (QSystemTrayIcon.Trigger, QSystemTrayIcon.DoubleClick, QSystemTrayIcon.Context): self.contextMenu().popup(QCursor.pos()) def about(self): aboutBox = QMessageBox(self.menu) aboutBox.setWindowIcon(QIcon.fromTheme("mambatray")) aboutBox.setWindowTitle(_("About")) aboutBox.setText( "