Daniel Brötzmann pushed to branch startup-early-window at gajim / gajim


Commits:
f3a1a984 by wurstsalat at 2025-07-07T23:29:12+02:00
perf: Main window: Display (empty) main window early to indicate startup 
progress

- - - - -


2 changed files:

- gajim/gtk/application.py
- gajim/gtk/main.py


Changes:

=====================================
gajim/gtk/application.py
=====================================
@@ -230,14 +230,18 @@ def _startup(self) -> None:
         icon_theme = get_icon_theme()
         icon_theme.add_search_path(str(configpaths.get("ICONS")))
 
-        from gajim.gtk import notification
-
-        notification.init()
-
         self.avatar_storage = AvatarStorage()
 
         app.load_css_config()
 
+        from gajim.gtk.main import MainWindow
+
+        main_window = MainWindow()
+
+        from gajim.gtk import notification
+
+        notification.init()
+
         idle.Monitor.set_interval(
             app.settings.get("autoawaytime") * 60, 
app.settings.get("autoxatime") * 60
         )
@@ -256,9 +260,7 @@ def _startup(self) -> None:
 
         self.register_event("feature-discovered", ged.CORE, 
self._on_feature_discovered)
 
-        from gajim.gtk.main import MainWindow
-
-        MainWindow()
+        main_window.init()
 
         if self._deprecated_options_used:
             migration_url = (


=====================================
gajim/gtk/main.py
=====================================
@@ -105,6 +105,18 @@ def __init__(self) -> None:
         self.set_title(GLib.get_application_name())
         self.set_default_icon_name("gajim")
 
+        self._startup_finished: bool = False
+
+        self._emoji_chooser: EmojiChooser | None = None
+        self._about_dialog = None
+        self._chat_page = self._main_stack.get_chat_page()
+
+        self._prepare_window()
+
+    def init(self) -> None:
+        """Init is called at a later point, so that the (empty) window can be
+        displayed early, indicating a progressing Gajim startup.
+        """
         self._about_dialog = AboutDialog()
 
         self._add_actions()
@@ -112,11 +124,6 @@ def __init__(self) -> None:
         self._add_stateful_actions()
         self._connect_actions()
 
-        self._startup_finished: bool = False
-
-        self._emoji_chooser: EmojiChooser | None = None
-
-        self._chat_page = self._main_stack.get_chat_page()
         self._app_side_bar.set_chat_page(self._chat_page)
 
         self.connect("notify::is-active", self._on_window_active)
@@ -159,8 +166,6 @@ def __init__(self) -> None:
 
         app.ged.raise_event(events.RegisterActions())
 
-        self._prepare_window()
-
         chat_list_stack = self._chat_page.get_chat_list_stack()
         app.app.systray.connect_unread_widget(chat_list_stack, 
"unread-count-changed")
         chat_list_stack.connect("chat-selected", self._on_chat_selected)
@@ -173,6 +178,7 @@ def __init__(self) -> None:
 
     @property
     def about_dialog(self) -> AboutDialog:
+        assert self._about_dialog is not None
         return self._about_dialog
 
     def get_action(self, name: str) -> Gio.SimpleAction:



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/f3a1a98462ee9793f1002d531fad57b1f97f9f72

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/f3a1a98462ee9793f1002d531fad57b1f97f9f72
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- commits@gajim.org
To unsubscribe send an email to commits-le...@gajim.org

Reply via email to