summarylogtreecommitdiffstats
path: root/arch_additions.py
blob: bfcd407b17e42efda45aa56dda8e87c6c28b8de1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys
import os
import psutil
import subprocess
from PyQt5 import QtCore, QtGui, QtWidgets

class SystemTrayIcon(QtWidgets.QSystemTrayIcon):

    def __init__(self, icon, parent=None):
        QtWidgets.QSystemTrayIcon.__init__(self, icon, parent)
        self.menu = QtWidgets.QMenu(parent)
        self.setContextMenu(self.menu)

def setupTrayIcon(url):
    qApp = QtWidgets.QApplication(sys.argv)
    w = QtWidgets.QWidget()
    trayIcon = SystemTrayIcon(QtGui.QIcon("/usr/lib/pgadmin4/web/pgAdmin4.png"), w)
    trayIcon.menu.addAction("New pgAdmin4 window", lambda: subprocess.run(["xdg-open", url]))
    trayIcon.menu.addAction("Exit server process", qApp.exit)
    trayIcon.show()
    print("Setup tray icon...")
    qApp.exec()

def checkRunning():
    for proc in psutil.process_iter():
        try:
            if "pgadmin4.py" in " ".join(proc.cmdline()).lower() and os.getpid() != proc.pid:
                print("pgAdmin4 server is already running...")
                sys.exit()
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
            pass