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
This commit is contained in:
Debanjum Singh Solanky 2022-08-13 00:43:53 +03:00
parent c2815c5d09
commit 684f497abe

View file

@ -1,4 +1,5 @@
# Standard Packages
from platform import system
import signal
import sys
@ -37,8 +38,14 @@ def run():
else:
# Setup GUI
gui = QtWidgets.QApplication([])
gui.setQuitOnLastWindowClosed(False)
configure_screen = ConfigureScreen(args.config_file)
# 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()
@ -46,8 +53,8 @@ def run():
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