From 68b3557747274ef8a8e95dfca073bc88e9c46be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 10 Nov 2023 15:05:20 +0100 Subject: [PATCH] Hide dock icon in no graphics mode (#653) * Package tart binary into app bundle when running via run-signed.sh This is what happens when installing the tart application package as built by CI. We should stay as close as possible to the install situation during development, so that we get bug/behavior parity. For example, an app bundle behaves differently than a standalone executable when it comes to bringing up a Dock icon for the app. * Set activation policy to prohibited when starting in no graphics mode This ensures that the Dock icon is hidden. --- Sources/tart/Commands/Run.swift | 7 +++++-- scripts/run-signed.sh | 6 +++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Sources/tart/Commands/Run.swift b/Sources/tart/Commands/Run.swift index 390aa3f..50e1686 100644 --- a/Sources/tart/Commands/Run.swift +++ b/Sources/tart/Commands/Run.swift @@ -312,8 +312,11 @@ struct Run: AsyncParsableCommand { let useVNCWithoutGraphics = (vnc || vncExperimental) && !graphics if noGraphics || useVNCWithoutGraphics { - // enter the main even loop and just wait for the VM to exit - NSApplication.shared.run() + // enter the main even loop, without bringing up any UI, + // and just wait for the VM to exit. + let nsApp = NSApplication.shared + nsApp.setActivationPolicy(.prohibited) + nsApp.run() } else { runUI(suspendable, captureSystemKeys) } diff --git a/scripts/run-signed.sh b/scripts/run-signed.sh index 4144623..23afeeb 100755 --- a/scripts/run-signed.sh +++ b/scripts/run-signed.sh @@ -8,4 +8,8 @@ set -e swift build --product tart codesign --sign - --entitlements Resources/tart-dev.entitlements --force .build/debug/tart -.build/debug/tart "$@" +mkdir -p .build/tart.app/Contents/MacOS +cp -c .build/debug/tart .build/tart.app/Contents/MacOS/tart +cp -c Resources/embedded.provisionprofile .build/tart.app/Contents/embedded.provisionprofile + +.build/tart.app/Contents/MacOS/tart "$@"