From 684f497abeae62731e4fc3112f20d1813121ca1c Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Sat, 13 Aug 2022 00:43:53 +0300 Subject: [PATCH] Handle no System Tray on Linux (Gnome) - What - On Linux - Show Configure Screen, even if not first run experience - Do no show system tray on Linux - Quit app on closing Configure Screen - On Windows, Mac - Show Configure screen only if first run experience - Show system tray always - Do not quit app on closing Configure Screen - Why - Configure screen is the only GUI element on Linux. So closing it should close the application - On Windows, Mac the system tray exists, so app should not be closed on closing configure screen --- src/main.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main.py b/src/main.py index 404e244c..435330da 100644 --- a/src/main.py +++ b/src/main.py @@ -1,4 +1,5 @@ # Standard Packages +from platform import system import signal import sys @@ -37,17 +38,23 @@ def run(): else: # Setup GUI gui = QtWidgets.QApplication([]) - gui.setQuitOnLastWindowClosed(False) configure_screen = ConfigureScreen(args.config_file) - tray = create_system_tray(gui, configure_screen) - tray.show() + + # System tray is only available on Windows, MacOS. + # On Linux (Gnome) the System tray is not supported. + # Since only the Configure Window is available + # Quitting it should quit the application + if system() in ['Windows', 'Darwin']: + gui.setQuitOnLastWindowClosed(False) + tray = create_system_tray(gui, configure_screen) + tray.show() # Setup Server configure_server(args, required=False) server = ServerThread(app, args.host, args.port, args.socket) - # Trigger First Run Experience, if required - if args.config is None: + # Show Configure Screen on Linux (etc.) or First Run Experience + if args.config is None or system() not in ['Windows', 'Darwin']: configure_screen.show() # Setup Signal Handlers