Skip to content

Commit 2982873

Browse files
Use Icon Composer icon with Liquid Glass support
Replace the programmatic AppIconFactory with a proper .icon file created in Icon Composer. The release workflow now compiles it via actool, producing both Assets.car (macOS 26 Liquid Glass) and AppIcon.icns (backwards compat).
1 parent fa8b2c2 commit 2982873

File tree

6 files changed

+70
-81
lines changed

6 files changed

+70
-81
lines changed

.github/workflows/release.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,20 @@ jobs:
8181
cp "$EXECUTABLE" "$APP_BUNDLE/Contents/MacOS/Reading List"
8282
cp Info.plist "$APP_BUNDLE/Contents/Info.plist"
8383
84+
# Compile .icon into Assets.car + AppIcon.icns
85+
xcrun actool \
86+
Resources/AppIcon.icon --app-icon AppIcon \
87+
--compile "$APP_BUNDLE/Contents/Resources" \
88+
--output-format human-readable-text \
89+
--notices --warnings --errors \
90+
--output-partial-info-plist /dev/null \
91+
--include-all-app-icons \
92+
--enable-on-demand-resources NO \
93+
--development-region en \
94+
--target-device mac \
95+
--minimum-deployment-target 26.0 \
96+
--platform macosx
97+
8498
# Set version in Info.plist
8599
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION" "$APP_BUNDLE/Contents/Info.plist"
86100
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $(date +%Y%m%d%H%M%S)" "$APP_BUNDLE/Contents/Info.plist"

Info.plist

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
<string>1.0</string>
1919
<key>LSMinimumSystemVersion</key>
2020
<string>13.0</string>
21+
<key>CFBundleIconFile</key>
22+
<string>AppIcon</string>
23+
<key>CFBundleIconName</key>
24+
<string>AppIcon</string>
2125
<key>NSHighResolutionCapable</key>
2226
<true/>
2327
<key>NSPrincipalClass</key>
174 KB
Loading

Resources/AppIcon.icon/icon.json

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{
2+
"fill" : {
3+
"automatic-gradient" : "extended-gray:1.00000,1.00000"
4+
},
5+
"groups" : [
6+
{
7+
"layers" : [
8+
{
9+
"fill-specializations" : [
10+
{
11+
"appearance" : "dark",
12+
"value" : {
13+
"solid" : "extended-gray:1.00000,1.00000"
14+
}
15+
},
16+
{
17+
"appearance" : "tinted",
18+
"value" : {
19+
"solid" : "extended-gray:1.00000,1.00000"
20+
}
21+
}
22+
],
23+
"glass" : true,
24+
"hidden" : false,
25+
"image-name" : "eyeglasses.png",
26+
"name" : "eyeglasses",
27+
"position" : {
28+
"scale" : 0.5,
29+
"translation-in-points" : [
30+
0,
31+
0
32+
]
33+
}
34+
}
35+
],
36+
"shadow" : {
37+
"kind" : "neutral",
38+
"opacity" : 0.5
39+
},
40+
"translucency" : {
41+
"enabled" : true,
42+
"value" : 0.5
43+
}
44+
}
45+
],
46+
"supported-platforms" : {
47+
"circles" : [
48+
"watchOS"
49+
],
50+
"squares" : "shared"
51+
}
52+
}

Sources/ReadLater/AppIconFactory.swift

Lines changed: 0 additions & 79 deletions
This file was deleted.

Sources/ReadLater/ReadLaterApp.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,6 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
115115
func applicationDidFinishLaunching(_: Notification) {
116116
NSApp.setActivationPolicy(.regular)
117117
NSApp.activate(ignoringOtherApps: true)
118-
NSApp.applicationIconImage = AppIconFactory.makeAppIcon()
119-
120118
// Ensure the first app window becomes key when launched from terminal.
121119
DispatchQueue.main.async {
122120
if let window = NSApp.windows.first {

0 commit comments

Comments
 (0)