From e89ef32a83643942ad08b5f9a91ab04441ce057f Mon Sep 17 00:00:00 2001 From: Nikolay Edigaryev Date: Fri, 23 Jun 2023 19:25:22 +0400 Subject: [PATCH] Enable automatic display reconfiguration for Sonoma (#521) * Enable automatic display reconfiguration for Sonoma * Xcode 15 Beta --------- Co-authored-by: fedor --- .cirrus.yml | 11 +++++++---- Sources/tart/Commands/Run.swift | 21 +++++++++++++++++++-- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index a3b00dc..fde8e4e 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,5 +1,8 @@ use_compute_credits: true +env: + XCODE_TAG: 15-beta-2 + task: name: Test on Ventura alias: test @@ -28,7 +31,7 @@ task: name: Lint alias: lint macos_instance: - image: ghcr.io/cirruslabs/macos-ventura-xcode:latest + image: ghcr.io/cirruslabs/macos-ventura-xcode:$XCODE_TAG lint_script: - swift package plugin --allow-writing-to-package-directory swiftformat --cache ignore --lint --report swiftformat.json . always: @@ -41,7 +44,7 @@ task: alias: build only_if: $CIRRUS_TAG == '' macos_instance: - image: ghcr.io/cirruslabs/macos-ventura-xcode:latest + image: ghcr.io/cirruslabs/macos-ventura-xcode:$XCODE_TAG build_script: swift build --product tart sign_script: codesign --sign - --entitlements Resources/tart-dev.entitlements --force .build/debug/tart binary_artifacts: @@ -54,7 +57,7 @@ task: - lint - build macos_instance: - image: ghcr.io/cirruslabs/macos-ventura-xcode:latest + image: ghcr.io/cirruslabs/macos-ventura-xcode:$XCODE_TAG env: MACOS_CERTIFICATE: ENCRYPTED[552b9d275d1c2bdbc1bff778b104a8f9a53cbd0d59344d4b7f6d0ca3c811a5cefb97bef9ba0ef31c219cb07bdacdd2c2] AC_PASSWORD: ENCRYPTED[4a761023e7e06fe2eb350c8b6e8e7ca961af193cb9ba47605f25f1d353abc3142606f412e405be48fd897a78787ea8c2] @@ -89,7 +92,7 @@ task: - test - build macos_instance: - image: ghcr.io/cirruslabs/macos-ventura-xcode:latest + image: ghcr.io/cirruslabs/macos-ventura-xcode:$XCODE_TAG env: MACOS_CERTIFICATE: ENCRYPTED[552b9d275d1c2bdbc1bff778b104a8f9a53cbd0d59344d4b7f6d0ca3c811a5cefb97bef9ba0ef31c219cb07bdacdd2c2] AC_PASSWORD: ENCRYPTED[4a761023e7e06fe2eb350c8b6e8e7ca961af193cb9ba47605f25f1d353abc3142606f412e405be48fd897a78787ea8c2] diff --git a/Sources/tart/Commands/Run.swift b/Sources/tart/Commands/Run.swift index b3cd6c8..bbbf85c 100644 --- a/Sources/tart/Commands/Run.swift +++ b/Sources/tart/Commands/Run.swift @@ -408,7 +408,14 @@ struct Run: AsyncParsableCommand { NSApplication.shared.terminate(self) } } - }.frame(width: CGFloat(vm!.config.display.width), height: CGFloat(vm!.config.display.height)) + }.frame( + minWidth: CGFloat(vm!.config.display.width), + idealWidth: CGFloat(vm!.config.display.width), + maxWidth: .infinity, + minHeight: CGFloat(vm!.config.display.height), + idealHeight: CGFloat(vm!.config.display.height), + maxHeight: .infinity + ) }.commands { // Remove some standard menu options CommandGroup(replacing: .help, addition: {}) @@ -486,8 +493,18 @@ struct VMView: NSViewRepresentable { func makeNSView(context: Context) -> NSViewType { let machineView = VZVirtualMachineView() - // so keys like take a windows screenshot (cmd+shift+4+space) works on the host and not guest + + // Do not capture system keys so that shortcuts like + // Shift-Command-4 + Space (capture a screenshot of window) + // work on the host instead of the guest machineView.capturesSystemKeys = false + + // Enable automatic display reconfiguration + // for guests that support it + if #available(macOS 14.0, *) { + machineView.automaticallyReconfiguresDisplay = true + } + return machineView }