File 077-cli-add-show-systray-option.patch of Package virt-manager

Subject: cli: add --show-systray option
From: Gustavo Costa xfgusta@gmail.com Wed Nov 3 21:45:04 2021 -0300
Date: Sun Mar 3 14:17:54 2024 -0500:
Git: 69290e0526aa3febf1fd867aa0e285f38df13637


diff --git a/virtManager/engine.py b/virtManager/engine.py
index a90b5464..e5aa3eb4 100644
--- a/virtManager/engine.py
+++ b/virtManager/engine.py
@@ -47,6 +47,7 @@ class vmmEngine(vmmGObject):
     CLI_SHOW_DOMAIN_CONSOLE = "console"
     CLI_SHOW_DOMAIN_DELETE = "delete"
     CLI_SHOW_HOST_SUMMARY = "summary"
+    CLI_SHOW_SYSTEM_TRAY = "systray"
 
     @classmethod
     def get_instance(cls):
@@ -63,6 +64,8 @@ class vmmEngine(vmmGObject):
 
         self._exiting = False
 
+        self.systray_instance = None
+
         self._window_count = 0
         self._gtkapplication = None
         self._init_gtk_application()
@@ -95,7 +98,7 @@ class vmmEngine(vmmGObject):
         """
         Actual startup routines if we are running a new instance of the app
         """
-        vmmSystray.get_instance()
+        self.systray_instance = vmmSystray.get_instance()
         vmmInspection.get_instance()
 
         self.add_gsettings_handle(
@@ -441,6 +444,9 @@ class vmmEngine(vmmGObject):
                               self.CLI_SHOW_DOMAIN_CONSOLE,
                               self.CLI_SHOW_DOMAIN_DELETE]):
             self._cli_show_vm_helper(uri, clistr, show_window)
+        elif show_window == self.CLI_SHOW_SYSTEM_TRAY:
+            log.debug("Showing in the system tray")
+            self.systray_instance._show_systray()
         else:  # pragma: no cover
             raise RuntimeError("Unknown cli window command '%s'" %
                 show_window)
@@ -461,6 +467,11 @@ class vmmEngine(vmmGObject):
         log.debug("processing cli command uri=%s show_window=%s domain=%s",
             uri, show_window, domain)
         if not uri:
+            if show_window == self.CLI_SHOW_SYSTEM_TRAY:
+                log.debug("Launching in the system tray without --connect")
+                self.systray_instance._show_systray()
+                return
+
             log.debug("No cli action requested, launching default window")
             self._get_manager().show()
             return
diff --git a/virtManager/virtmanager.py b/virtManager/virtmanager.py
index c358dce9..418fd336 100644
--- a/virtManager/virtmanager.py
+++ b/virtManager/virtmanager.py
@@ -155,6 +155,8 @@ def parse_commandline():
         help="Show domain delete window")
     parser.add_argument("--show-host-summary", action="store_true",
         help="Show connection details window")
+    parser.add_argument("--show-systray", action="store_true",
+        help="Launch virt-manager in system tray")
 
     return parser.parse_known_args()
 
@@ -240,12 +242,16 @@ def main():
     elif options.show_domain_delete:
         show_window = vmmEngine.CLI_SHOW_DOMAIN_DELETE
         domain = options.show_domain_delete
+    elif options.show_systray:
+        show_window = vmmEngine.CLI_SHOW_SYSTEM_TRAY
 
-    if show_window and options.uri is None:  # pragma: no cover
-        raise RuntimeError("can't use --show-* options without --connect")
+    if (show_window and show_window != vmmEngine.CLI_SHOW_SYSTEM_TRAY and
+        options.uri is None):  # pragma: no cover
+        raise RuntimeError("can't use --show-* options without --connect "
+                           "(except --show-systray)")
 
     skip_autostart = False
-    if show_window:
+    if show_window and show_window != vmmEngine.CLI_SHOW_SYSTEM_TRAY:
         skip_autostart = True
 
     # Hook libvirt events into glib main loop
openSUSE Build Service is sponsored by