From 43ac4b6b031f99a4cce404cbcb44c00275f6e2e4 Mon Sep 17 00:00:00 2001 From: chrg6 Date: Mon, 9 Nov 2026 08:54:25 -0500 Subject: [PATCH] Show Navi as the game's icon, and start the game from the launcher without an empty console window. runtime/nx2navi.ico (the game window's title bar, taskbar button and Alt+Tab icon) is now the launcher's Navi, written from launcher/ui/art.py navi_ico at the same ten sizes, in place of the Triforce. ocarina.exe is a console program and the launcher has none, so Windows opened a console window titled with the exe's path beside the game; winsys.start_game now passes CREATE_NO_WINDOW. Co-Authored-By: Claude Opus 5.5 --- docs/releases/v0.6.0.md | 2 ++ launcher/winsys.py | 7 +++++-- runtime/nx2navi.ico | Bin 9769 -> 50651 bytes 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/releases/v0.6.0.md b/docs/releases/v0.6.0.md index 31051e4b..f71cb412 100644 --- a/docs/releases/v0.6.0.md +++ b/docs/releases/v0.6.0.md @@ -61,6 +61,8 @@ cards). - Windows' switched mouse buttons are followed; the window opens inside the screen and fullscreen comes back when the window is raised; the game closes down properly when Windows shuts down. - A crash when the game's microphone stream could not open is gone. +- The game's window and taskbar button show Navi, and starting the game from the launcher no longer opens an empty + console window beside it. - The game keeps presenting after a failed present, and only one game runs per profile at a time. - Saves: Import Saves and Quit keep saves safe, a linked profile folder keeps working, and save writes check their sizes. diff --git a/launcher/winsys.py b/launcher/winsys.py index ae23ea5c..460a0eb5 100644 --- a/launcher/winsys.py +++ b/launcher/winsys.py @@ -150,9 +150,12 @@ def open_path(path): def start_game(exe): - """Start the game from its own folder; returns the process to watch.""" + """Start the game from its own folder; returns the process to watch. ocarina.exe is a console program and the + launcher has no console, so without CREATE_NO_WINDOW Windows opened an empty console window beside the game, + titled with the exe's path. With it the game still has a console (hidden), which its restarts inherit.""" exe = Path(exe) - flags = {'creationflags': CREATE_NEW_PROCESS_GROUP} if os.name == 'nt' else {'start_new_session': True} + flags = {'creationflags': CREATE_NO_WINDOW | CREATE_NEW_PROCESS_GROUP} if os.name == 'nt' \ + else {'start_new_session': True} return subprocess.Popen([str(exe)], cwd=str(exe.parent), stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, close_fds=True, **flags) diff --git a/runtime/nx2navi.ico b/runtime/nx2navi.ico index b68937772a6efeb27b1681a3934e47698e798a78..16262590b2ce45962d37ac0c4d0a29a21280b573 100644 GIT binary patch literal 50651 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 literal 9769 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 C#>F!L