diff --git a/.prettierignore b/.prettierignore
index 490538680..f131a5edc 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -11,6 +11,9 @@ zig-out/
# macos is managed by XCode GUI
macos/
+# produced by Icon Composer on macOS
+images/Ghostty.icon/icon.json
+
# website dev run
website/.next
diff --git a/dist/macos/Ghostty.icns b/dist/macos/Ghostty.icns
deleted file mode 100644
index 44a44711a..000000000
Binary files a/dist/macos/Ghostty.icns and /dev/null differ
diff --git a/dist/macos/Info.plist b/dist/macos/Info.plist
deleted file mode 100644
index 8283cc529..000000000
--- a/dist/macos/Info.plist
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- CFBundleExecutable
- ghostty
- CFBundleIdentifier
- com.mitchellh.ghostty
- CFBundleName
- Ghostty
- CFBundleDisplayName
- Ghostty
- CFBundleIconFile
- Ghostty.icns
-
-
-
diff --git a/images/Ghostty.icon/Assets/Ghostty.png b/images/Ghostty.icon/Assets/Ghostty.png
new file mode 100644
index 000000000..49795c006
Binary files /dev/null and b/images/Ghostty.icon/Assets/Ghostty.png differ
diff --git a/images/Ghostty.icon/Assets/Inner Bevel 6px.png b/images/Ghostty.icon/Assets/Inner Bevel 6px.png
new file mode 100644
index 000000000..678193779
Binary files /dev/null and b/images/Ghostty.icon/Assets/Inner Bevel 6px.png differ
diff --git a/images/Ghostty.icon/Assets/Screen Effects.png b/images/Ghostty.icon/Assets/Screen Effects.png
new file mode 100644
index 000000000..0af7d3338
Binary files /dev/null and b/images/Ghostty.icon/Assets/Screen Effects.png differ
diff --git a/images/Ghostty.icon/Assets/Screen.png b/images/Ghostty.icon/Assets/Screen.png
new file mode 100644
index 000000000..2023b6ffa
Binary files /dev/null and b/images/Ghostty.icon/Assets/Screen.png differ
diff --git a/images/Ghostty.icon/Assets/gloss.png b/images/Ghostty.icon/Assets/gloss.png
new file mode 100644
index 000000000..f11196010
Binary files /dev/null and b/images/Ghostty.icon/Assets/gloss.png differ
diff --git a/images/Ghostty.icon/icon.json b/images/Ghostty.icon/icon.json
new file mode 100644
index 000000000..b29c9d81f
--- /dev/null
+++ b/images/Ghostty.icon/icon.json
@@ -0,0 +1,170 @@
+{
+ "color-space-for-untagged-svg-colors" : "display-p3",
+ "fill" : {
+ "linear-gradient" : [
+ "display-p3:0.87945,0.87945,0.87945,1.00000",
+ "display-p3:0.40000,0.40000,0.40392,1.00000"
+ ]
+ },
+ "groups" : [
+ {
+ "blend-mode" : "normal",
+ "layers" : [
+ {
+ "blend-mode" : "overlay",
+ "fill" : {
+ "linear-gradient" : [
+ "srgb:1.00000,1.00000,1.00000,1.00000",
+ "srgb:0.00000,0.00000,0.00000,1.00000"
+ ]
+ },
+ "hidden" : false,
+ "image-name" : "gloss.png",
+ "name" : "GlossTop",
+ "opacity" : 0.25,
+ "position" : {
+ "scale" : 0.98,
+ "translation-in-points" : [
+ 0.90625,
+ -236.4609375
+ ]
+ }
+ },
+ {
+ "blend-mode" : "normal",
+ "fill" : "automatic",
+ "hidden" : false,
+ "image-name" : "gloss.png",
+ "name" : "gloss",
+ "position" : {
+ "scale" : 0.98,
+ "translation-in-points" : [
+ 0.90625,
+ -236.4609375
+ ]
+ }
+ }
+ ],
+ "lighting" : "individual",
+ "name" : "Group 4",
+ "shadow" : {
+ "kind" : "neutral",
+ "opacity" : 0.5
+ },
+ "translucency" : {
+ "enabled" : true,
+ "value" : 0.5
+ }
+ },
+ {
+ "blend-mode" : "overlay",
+ "layers" : [
+ {
+ "blend-mode" : "overlay",
+ "fill" : "automatic",
+ "glass" : false,
+ "hidden" : false,
+ "image-name" : "Screen Effects.png",
+ "name" : "Screen Effects"
+ },
+ {
+ "blend-mode" : "overlay",
+ "fill" : "automatic",
+ "glass" : true,
+ "hidden" : false,
+ "image-name" : "Screen Effects.png",
+ "name" : "Screen Effects"
+ }
+ ],
+ "lighting" : "individual",
+ "name" : "Group 3",
+ "shadow" : {
+ "kind" : "neutral",
+ "opacity" : 0.5
+ },
+ "translucency" : {
+ "enabled" : false,
+ "value" : 0.5
+ }
+ },
+ {
+ "blur-material" : null,
+ "layers" : [
+ {
+ "blend-mode" : "normal",
+ "fill" : "automatic",
+ "hidden" : false,
+ "image-name" : "Ghostty.png",
+ "name" : "Ghostty",
+ "position" : {
+ "scale" : 1,
+ "translation-in-points" : [
+ -185.015625,
+ -143.8359375
+ ]
+ }
+ },
+ {
+ "blend-mode" : "normal",
+ "fill" : {
+ "solid" : "extended-srgb:0.00000,0.47843,1.00000,1.00000"
+ },
+ "glass" : true,
+ "hidden" : false,
+ "image-name" : "Ghostty.png",
+ "name" : "GhosttyBlur",
+ "position" : {
+ "scale" : 1,
+ "translation-in-points" : [
+ -186.59375,
+ -143.8359375
+ ]
+ }
+ },
+ {
+ "hidden" : false,
+ "image-name" : "Screen.png",
+ "name" : "Screen"
+ }
+ ],
+ "lighting" : "individual",
+ "name" : "Group 2",
+ "shadow" : {
+ "kind" : "neutral",
+ "opacity" : 0.5
+ },
+ "translucency" : {
+ "enabled" : false,
+ "value" : 0.5
+ }
+ },
+ {
+ "blend-mode" : "normal",
+ "blur-material" : null,
+ "hidden" : false,
+ "layers" : [
+ {
+ "image-name" : "Inner Bevel 6px.png",
+ "name" : "Inner Bevel 6px"
+ }
+ ],
+ "lighting" : "individual",
+ "name" : "Group 1",
+ "shadow" : {
+ "kind" : "layer-color",
+ "opacity" : 0.2
+ },
+ "specular" : false,
+ "translucency" : {
+ "enabled" : false,
+ "value" : 0.5
+ }
+ }
+ ],
+ "supported-platforms" : {
+ "circles" : [
+ "watchOS"
+ ],
+ "squares" : "shared"
+ }
+}
\ No newline at end of file
diff --git a/images/icons/icon_1024.png b/images/icons/icon_1024.png
index a0b716c87..22361edcb 100644
Binary files a/images/icons/icon_1024.png and b/images/icons/icon_1024.png differ
diff --git a/images/icons/icon_1024@2x.png b/images/icons/icon_1024@2x.png
new file mode 100644
index 000000000..22361edcb
Binary files /dev/null and b/images/icons/icon_1024@2x.png differ
diff --git a/images/icons/icon_128.png b/images/icons/icon_128.png
index bad0eb891..317ad9f0f 100644
Binary files a/images/icons/icon_128.png and b/images/icons/icon_128.png differ
diff --git a/images/icons/icon_256.png b/images/icons/icon_256.png
index 803224416..9988ac11e 100644
Binary files a/images/icons/icon_256.png and b/images/icons/icon_256.png differ
diff --git a/images/icons/icon_256@2x.png b/images/icons/icon_256@2x.png
index b51b8d7dc..9988ac11e 100644
Binary files a/images/icons/icon_256@2x.png and b/images/icons/icon_256@2x.png differ
diff --git a/images/icons/icon_512.png b/images/icons/icon_512.png
index b51b8d7dc..759511f68 100644
Binary files a/images/icons/icon_512.png and b/images/icons/icon_512.png differ
diff --git a/images/icons/icon_512@2x.png b/images/icons/icon_512@2x.png
new file mode 100644
index 000000000..759511f68
Binary files /dev/null and b/images/icons/icon_512@2x.png differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 9c6bc2e81..000000000
--- a/macos/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "images" : [
- {
- "filename" : "macOS-AppIcon-1024px.png",
- "idiom" : "universal",
- "platform" : "ios",
- "size" : "1024x1024"
- },
- {
- "filename" : "macOS-AppIcon-16px-16pt@1x.png",
- "idiom" : "mac",
- "scale" : "1x",
- "size" : "16x16"
- },
- {
- "filename" : "macOS-AppIcon-32px-16pt@2x.png",
- "idiom" : "mac",
- "scale" : "2x",
- "size" : "16x16"
- },
- {
- "filename" : "macOS-AppIcon-32px-32pt@1x.png",
- "idiom" : "mac",
- "scale" : "1x",
- "size" : "32x32"
- },
- {
- "filename" : "macOS-AppIcon-64px-32pt@2x.png",
- "idiom" : "mac",
- "scale" : "2x",
- "size" : "32x32"
- },
- {
- "filename" : "macOS-AppIcon-128px-128pt@1x.png",
- "idiom" : "mac",
- "scale" : "1x",
- "size" : "128x128"
- },
- {
- "filename" : "macOS-AppIcon-256px-128pt@2x.png",
- "idiom" : "mac",
- "scale" : "2x",
- "size" : "128x128"
- },
- {
- "filename" : "macOS-AppIcon-256px-128pt@2x 1.png",
- "idiom" : "mac",
- "scale" : "1x",
- "size" : "256x256"
- },
- {
- "filename" : "macOS-AppIcon-512px-256pt@2x.png",
- "idiom" : "mac",
- "scale" : "2x",
- "size" : "256x256"
- },
- {
- "filename" : "macOS-AppIcon-512px.png",
- "idiom" : "mac",
- "scale" : "1x",
- "size" : "512x512"
- },
- {
- "filename" : "macOS-AppIcon-1024px 1.png",
- "idiom" : "mac",
- "scale" : "2x",
- "size" : "512x512"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-1024px 1.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-1024px 1.png
deleted file mode 100644
index a0b716c87..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-1024px 1.png and /dev/null differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-1024px.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-1024px.png
deleted file mode 100644
index a0b716c87..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-1024px.png and /dev/null differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-128px-128pt@1x.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-128px-128pt@1x.png
deleted file mode 100644
index bad0eb891..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-128px-128pt@1x.png and /dev/null differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-16px-16pt@1x.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-16px-16pt@1x.png
deleted file mode 100644
index cacff7a54..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-16px-16pt@1x.png and /dev/null differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-256px-128pt@2x 1.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-256px-128pt@2x 1.png
deleted file mode 100644
index 46c3f7050..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-256px-128pt@2x 1.png and /dev/null differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-256px-128pt@2x.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-256px-128pt@2x.png
deleted file mode 100644
index 46c3f7050..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-256px-128pt@2x.png and /dev/null differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-32px-16pt@2x.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-32px-16pt@2x.png
deleted file mode 100644
index c8011a605..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-32px-16pt@2x.png and /dev/null differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-32px-32pt@1x.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-32px-32pt@1x.png
deleted file mode 100644
index 5e68d5fd0..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-32px-32pt@1x.png and /dev/null differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-512px-256pt@2x.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-512px-256pt@2x.png
deleted file mode 100644
index b51b8d7dc..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-512px-256pt@2x.png and /dev/null differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-512px.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-512px.png
deleted file mode 100644
index f302b40bb..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-512px.png and /dev/null differ
diff --git a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-64px-32pt@2x.png b/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-64px-32pt@2x.png
deleted file mode 100644
index e394a5170..000000000
Binary files a/macos/Assets.xcassets/AppIcon.appiconset/macOS-AppIcon-64px-32pt@2x.png and /dev/null differ
diff --git a/macos/Ghostty.xcodeproj/project.pbxproj b/macos/Ghostty.xcodeproj/project.pbxproj
index 416d8b106..cf806c7bd 100644
--- a/macos/Ghostty.xcodeproj/project.pbxproj
+++ b/macos/Ghostty.xcodeproj/project.pbxproj
@@ -60,6 +60,8 @@
A54D786C2CA7978E001B19B1 /* BaseTerminalController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A54D786B2CA79788001B19B1 /* BaseTerminalController.swift */; };
A553F4062E05E93000257779 /* Optional+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51194122E05D003007258CC /* Optional+Extension.swift */; };
A553F4072E05E93D00257779 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A586366A2DF0A98900E04A10 /* Array+Extension.swift */; };
+ A553F4132E06EB1600257779 /* Ghostty.icon in Resources */ = {isa = PBXBuildFile; fileRef = A553F4122E06EB1600257779 /* Ghostty.icon */; };
+ A553F4142E06EB1600257779 /* Ghostty.icon in Resources */ = {isa = PBXBuildFile; fileRef = A553F4122E06EB1600257779 /* Ghostty.icon */; };
A5593FDF2DF8D57C00B47B10 /* TerminalWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5593FDE2DF8D57100B47B10 /* TerminalWindow.swift */; };
A5593FE12DF8D74000B47B10 /* HiddenTitlebarTerminalWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5593FE02DF8D73400B47B10 /* HiddenTitlebarTerminalWindow.swift */; };
A5593FE32DF8D78600B47B10 /* TerminalHiddenTitlebar.xib in Resources */ = {isa = PBXBuildFile; fileRef = A5593FE22DF8D78600B47B10 /* TerminalHiddenTitlebar.xib */; };
@@ -193,6 +195,7 @@
A54B0CEC2D0CFB7300CBEFF8 /* ColorizedGhosttyIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorizedGhosttyIcon.swift; sourceTree = ""; };
A54B0CEE2D0D2E2400CBEFF8 /* ColorizedGhosttyIconImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorizedGhosttyIconImage.swift; sourceTree = ""; };
A54D786B2CA79788001B19B1 /* BaseTerminalController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTerminalController.swift; sourceTree = ""; };
+ A553F4122E06EB1600257779 /* Ghostty.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; name = Ghostty.icon; path = ../images/Ghostty.icon; sourceTree = SOURCE_ROOT; };
A5593FDE2DF8D57100B47B10 /* TerminalWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TerminalWindow.swift; sourceTree = ""; };
A5593FE02DF8D73400B47B10 /* HiddenTitlebarTerminalWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HiddenTitlebarTerminalWindow.swift; sourceTree = ""; };
A5593FE22DF8D78600B47B10 /* TerminalHiddenTitlebar.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TerminalHiddenTitlebar.xib; sourceTree = ""; };
@@ -576,6 +579,7 @@
children = (
A571AB1C2A206FC600248498 /* Ghostty-Info.plist */,
A5B30538299BEAAB0047F10C /* Assets.xcassets */,
+ A553F4122E06EB1600257779 /* Ghostty.icon */,
A5B3053D299BEAAB0047F10C /* Ghostty.entitlements */,
A51BFC282B30F26D00E92F16 /* GhosttyDebug.entitlements */,
3B39CAA42B33949B00DABEB8 /* GhosttyReleaseLocal.entitlements */,
@@ -748,6 +752,7 @@
buildActionMask = 2147483647;
files = (
FC9ABA9C2D0F53F80020D4C8 /* bash-completion in Resources */,
+ A553F4142E06EB1600257779 /* Ghostty.icon in Resources */,
A5593FE52DF8DE3000B47B10 /* TerminalTabsTitlebarVentura.xib in Resources */,
29C15B1D2CDC3B2900520DD4 /* bat in Resources */,
A586167C2B7703CC009BDB1D /* fish in Resources */,
@@ -776,6 +781,7 @@
buildActionMask = 2147483647;
files = (
A53D0C952B53B4D800305CE6 /* Assets.xcassets in Resources */,
+ A553F4132E06EB1600257779 /* Ghostty.icon in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -970,7 +976,7 @@
3B39CAA32B33946300DABEB8 /* ReleaseLocal */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_APPICON_NAME = Ghostty;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
CLANG_ENABLE_MODULES = YES;
@@ -1140,7 +1146,7 @@
A5B30541299BEAAB0047F10C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_APPICON_NAME = Ghostty;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
CLANG_ENABLE_MODULES = YES;
@@ -1194,7 +1200,7 @@
A5B30542299BEAAB0047F10C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_APPICON_NAME = Ghostty;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
CLANG_ENABLE_MODULES = YES;
@@ -1247,7 +1253,7 @@
A5D449A82B53AE7B000F5B83 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_APPICON_NAME = Ghostty;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
@@ -1286,7 +1292,7 @@
A5D449A92B53AE7B000F5B83 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_APPICON_NAME = Ghostty;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
@@ -1325,7 +1331,7 @@
A5D449AA2B53AE7B000F5B83 /* ReleaseLocal */ = {
isa = XCBuildConfiguration;
buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_APPICON_NAME = Ghostty;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
diff --git a/macos/Sources/Features/Colorized Ghostty Icon/ColorizedGhosttyIconImage.swift b/macos/Sources/Features/Colorized Ghostty Icon/ColorizedGhosttyIconImage.swift
index 4d522067e..8a461699f 100644
--- a/macos/Sources/Features/Colorized Ghostty Icon/ColorizedGhosttyIconImage.swift
+++ b/macos/Sources/Features/Colorized Ghostty Icon/ColorizedGhosttyIconImage.swift
@@ -4,12 +4,26 @@ extension View {
/// Returns the ghostty icon to use for views.
func ghosttyIconImage() -> Image {
#if os(macOS)
+ // If we have a specific icon set, then use that
if let delegate = NSApplication.shared.delegate as? AppDelegate,
let nsImage = delegate.appIcon {
return Image(nsImage: nsImage)
}
+
+ // Grab the icon from the running application. This is the best way
+ // I've found so far to get the proper icon for our current icon
+ // tinting and so on with macOS Tahoe
+ if let icon = NSRunningApplication.current.icon {
+ return Image(nsImage: icon)
+ }
+
+ // Get our defined application icon image.
+ if let nsImage = NSApp.applicationIconImage {
+ return Image(nsImage: nsImage)
+ }
#endif
+ // Fall back to a static representation
return Image("AppIconImage")
}
}