From fb62fe285dd33dd5c15554e2b3c7094684d616e5 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 13 May 2026 20:48:50 +0900 Subject: [PATCH] change: use Gtk.present_window_with_time() --- dzgui/config/userprefs.py | 1 - dzgui/controllers/mc.py | 3 +++ dzgui/init/proc.py | 1 + dzgui/main.py | 9 +-------- dzgui/managers/connection.py | 12 ++++-------- dzgui/views/pages/preconnect.py | 5 ++--- 6 files changed, 11 insertions(+), 20 deletions(-) diff --git a/dzgui/config/userprefs.py b/dzgui/config/userprefs.py index b0d7c4a..a06094c 100644 --- a/dzgui/config/userprefs.py +++ b/dzgui/config/userprefs.py @@ -17,4 +17,3 @@ class UserPrefs: allow_updates: bool paths: "Xdg" use_miles: bool - foreground_cmd: str | None diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index abc1ac6..5de87dc 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -497,3 +497,6 @@ class Controller(GObject.GObject): def get_steam_client_name(self) -> str: return self.mediator.options.get_client_name() + + def present_window(self) -> None: + self.mediator.window.present_with_time(Gdk.CURRENT_TIME) diff --git a/dzgui/init/proc.py b/dzgui/init/proc.py index adb7d97..bff06c9 100644 --- a/dzgui/init/proc.py +++ b/dzgui/init/proc.py @@ -60,6 +60,7 @@ def has_cmd(cmd: str) -> bool: return False +@deprecated("dropped in favor of Gtk native methods") def foreground(cmd: str, pid: int) -> None: if cmd == "wmctrl": proc = subprocess.run(["wmctrl", "-ilp"], capture_output=True, text=True) diff --git a/dzgui/main.py b/dzgui/main.py index 3426d27..988307a 100644 --- a/dzgui/main.py +++ b/dzgui/main.py @@ -7,7 +7,7 @@ import warnings from typing import TYPE_CHECKING from dzgui.api.mods import remove_stale_signatures -from dzgui.const.constants import APP_NAME, FOREGROUND_CMDS +from dzgui.const.constants import APP_NAME from dzgui.const.enum import Preferences from dzgui.config.ipdb import get_ipdb from dzgui.config.query import lookup @@ -142,12 +142,6 @@ def main() -> None: local_coords = get_local_coords(XDG.ips) use_miles = lookup(XDG.config, Preferences.DIST) - tool = None - for cmd in FOREGROUND_CMDS: - if has_cmd(cmd) is True: - tool = cmd - break - prefs = UserPrefs( is_steam_deck=_is_steam_deck, is_game_mode=_is_game_mode, @@ -157,7 +151,6 @@ def main() -> None: allow_updates=allow, paths=XDG, use_miles=use_miles, - foreground_cmd=tool, ) # TODO: drop allow updates print(boot.all_ok) diff --git a/dzgui/managers/connection.py b/dzgui/managers/connection.py index bbfc3cf..e5eb715 100644 --- a/dzgui/managers/connection.py +++ b/dzgui/managers/connection.py @@ -32,7 +32,7 @@ from dzgui.const.constants import ( APPNAME_DAYZ_EXP, ) from dzgui.const.enum import NotebookPage, Preferences -from dzgui.init.proc import foreground, is_dayz_running, is_steam_running +from dzgui.init.proc import is_dayz_running, is_steam_running from dzgui.managers.threading import call_on_thread, StoredFunc, ThreadingManager from dzgui.strings.dialogs import waiting_for_launch, waiting_for_mods from dzgui.strings.server_mods import checkmark, resync @@ -74,7 +74,6 @@ class Prerequisites: dayz_running: bool steam_proc: SteamProcess mods: list[list[str]] - foreground_cmd: str | None game_mode: bool @@ -167,7 +166,6 @@ class ConnectionManager: running = is_steam_running(client) steam_proc = SteamProcess(client_name, running) - self.foreground_cmd = prefs.foreground_cmd game_mode = prefs.is_game_mode prereqs = Prerequisites( @@ -183,7 +181,6 @@ class ConnectionManager: dayz_running=dayz_running, steam_proc=steam_proc, mods=remote_mods, - foreground_cmd=self.foreground_cmd, # TODO: change to bool game_mode=game_mode, ) @@ -281,10 +278,9 @@ class ConnectionManager: enqueue_mod(mod, self.appid) time.sleep(2) - if self.foreground_cmd is not None and raise_window is True: - pid = os.getpid() - logger.info(f"Raising window with '{self.foreground_cmd}'") - foreground(self.foreground_cmd, pid) + if raise_window is True: + logger.info(f"Bringing window to foreground") + GLib.idle_add(self.controller.present_window) for title, mod, stamp, size in self.missing_mods: mod_path = self.workshop / mod diff --git a/dzgui/views/pages/preconnect.py b/dzgui/views/pages/preconnect.py index 01207d9..cda5a77 100644 --- a/dzgui/views/pages/preconnect.py +++ b/dzgui/views/pages/preconnect.py @@ -116,7 +116,7 @@ class PreConnectionAssistant(Gtk.ScrolledWindow): visible=False, has_tooltip=True, sensitive=False, - tooltip_text="This option is available if wmctrl or xdotool is installed on the system", + tooltip_text="Foreground the DZGUI window after mod downloads are queued", active=True, ) self.button_box = Gtk.Box( @@ -303,8 +303,7 @@ class PreConnectionAssistant(Gtk.ScrolledWindow): self.raise_window.set_visible(False) else: self.raise_window.set_visible(True) - if prereqs.foreground_cmd is not None: - self.raise_window.set_sensitive(True) + self.raise_window.set_sensitive(True) pretty = number(prereqs.required_space) suffix = f" Need to download {pretty} MiB of mod updates."