B55403EB2A7A2AD2004BCBAB /* Captura.sdef in Resources */ = {isa = PBXBuildFile; fileRef = B5278B482A781B78009F6462 /* Captura.sdef */; };
B55403ED2A7A388B004BCBAB /* RecordCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = B55403EC2A7A388B004BCBAB /* RecordCommand.swift */; };
B55541E52C95801B0015F522 /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = B55541E42C95801B0015F522 /* Sparkle */; };
+ B55541E72C95F59E0015F522 /* AboutSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = B55541E62C95F5980015F522 /* AboutSettings.swift */; };
B55DDFCC2A6F0253001A5E76 /* Notification+AppEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = B55DDFCB2A6F0253001A5E76 /* Notification+AppEvents.swift */; };
B55DDFCE2A6F069D001A5E76 /* RecordingWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = B55DDFCD2A6F069D001A5E76 /* RecordingWindow.swift */; };
B56C70CD2A6EFDF4009B97EB /* CaptureState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56C70CC2A6EFDF4009B97EB /* CaptureState.swift */; };
B55403E62A79A08C004BCBAB /* CapturaShortcutsProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CapturaShortcutsProvider.swift; sourceTree = "<group>"; };
B55403E92A79A434004BCBAB /* ScriptedPreferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptedPreferences.swift; sourceTree = "<group>"; };
B55403EC2A7A388B004BCBAB /* RecordCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordCommand.swift; sourceTree = "<group>"; };
+ B55541E62C95F5980015F522 /* AboutSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutSettings.swift; sourceTree = "<group>"; };
B55DDFCB2A6F0253001A5E76 /* Notification+AppEvents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+AppEvents.swift"; sourceTree = "<group>"; };
B55DDFCD2A6F069D001A5E76 /* RecordingWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordingWindow.swift; sourceTree = "<group>"; };
B56C70CC2A6EFDF4009B97EB /* CaptureState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaptureState.swift; sourceTree = "<group>"; };
B5278B1D2A71BD8A009F6462 /* Settings */ = {
isa = PBXGroup;
children = (
+ B55541E62C95F5980015F522 /* AboutSettings.swift */,
B5278B1E2A71BD9B009F6462 /* OutputSettings.swift */,
B5278B242A71CA80009F6462 /* AdvancedSettings.swift */,
);
B5E7B75F2AB5D84700D5F03B /* NSScreen+screenWithMouse.swift in Sources */,
B5278B1F2A71BD9B009F6462 /* OutputSettings.swift in Sources */,
B5278B2A2A73992D009F6462 /* GifRenderer.swift in Sources */,
+ B55541E72C95F59E0015F522 /* AboutSettings.swift in Sources */,
B5278B212A71BFC3009F6462 /* OutputFormatSetting.swift in Sources */,
B55DDFCE2A6F069D001A5E76 /* RecordingWindow.swift in Sources */,
B55403ED2A7A388B004BCBAB /* RecordCommand.swift in Sources */,
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
+ <key>com.apple.security.temporary-exception.mach-lookup.global-name</key>
+ <array>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)-spks</string>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)-spki</string>
+ </array>
<key>com.apple.developer.aps-environment</key>
<string>development</string>
<key>com.apple.developer.icloud-container-identifiers</key>
--- /dev/null
+import SwiftUI
+
+struct AboutSettings: View {
+
+ var appVersion: String {
+ let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "Unknown"
+ let build = Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "Unknown"
+ return "Version \(version) (\(build))"
+ }
+
+ var imprint = (try? AttributedString(markdown: "Captura is open source. Help and more information available at [captura.tranquil.systems](https://captura.tranquil.systems)")) ?? ""
+
+ var body: some View {
+ Form {
+ VStack (alignment: .center) {
+ Text("Captura").bold()
+ Text(appVersion).foregroundStyle(.secondary)
+ Spacer()
+ Text(imprint)
+ .multilineTextAlignment(.center)
+ }
+ Spacer()
+ }
+ }
+}
+
+#Preview {
+ AboutSettings()
+}