From 84972a5fbdeeb29cb538163409324bc6dc7d5691 Mon Sep 17 00:00:00 2001 From: Qiu Yuzhou Date: Wed, 30 Sep 2026 21:04:47 +0800 Subject: [PATCH] feat(app): swap status bar icon to paper plane --- .../App/Assets.xcassets/Contents.json | 6 +++++ .../MenuBarIcon.imageset/Contents.json | 21 ++++++++++++++++++ .../MenuBarIcon.imageset/menubar-icon@1x.png | Bin 0 -> 616 bytes .../MenuBarIcon.imageset/menubar-icon@2x.png | Bin 0 -> 902 bytes ShadowsocksX-NG2/App/MainApp.swift | 3 ++- 5 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 ShadowsocksX-NG2/App/Assets.xcassets/Contents.json create mode 100644 ShadowsocksX-NG2/App/Assets.xcassets/MenuBarIcon.imageset/Contents.json create mode 100644 ShadowsocksX-NG2/App/Assets.xcassets/MenuBarIcon.imageset/menubar-icon@1x.png create mode 100644 ShadowsocksX-NG2/App/Assets.xcassets/MenuBarIcon.imageset/menubar-icon@2x.png diff --git a/ShadowsocksX-NG2/App/Assets.xcassets/Contents.json b/ShadowsocksX-NG2/App/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/ShadowsocksX-NG2/App/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShadowsocksX-NG2/App/Assets.xcassets/MenuBarIcon.imageset/Contents.json b/ShadowsocksX-NG2/App/Assets.xcassets/MenuBarIcon.imageset/Contents.json new file mode 100644 index 00000000..2144f5cf --- /dev/null +++ b/ShadowsocksX-NG2/App/Assets.xcassets/MenuBarIcon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "menubar-icon@1x.png", + "idiom" : "mac", + "scale" : "1x" + }, + { + "filename" : "menubar-icon@2x.png", + "idiom" : "mac", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/ShadowsocksX-NG2/App/Assets.xcassets/MenuBarIcon.imageset/menubar-icon@1x.png b/ShadowsocksX-NG2/App/Assets.xcassets/MenuBarIcon.imageset/menubar-icon@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..9d5728ffa371e475968ee1f4dd9f8ef92f52603a GIT binary patch literal 616 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|m6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9fnimzvJsHSS>O>_%)r2R7=#&*=dVZs z3bL1Y`ns~e;*{fMkX)7b8f3LRdP`(kYX@0Ff!9Mu+%lO2r)3WGBUL? zHPbdQure^v-`5Q?7@;9IKP5A*5{m`{hz46@wk<#n8gLs*GILXlOA>Pn;ChS=LJW<8 zW&`bk=y|GgObe(-5~L?MKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IX1_nkUPZ!4! zjq^({*?Zqk6kvF8e3$2}1&jEC0%Kgnw|lfZlosS#TU-f@IdavJT|D*|BiGUkNrL+u zF6j9w=>=+8iEObF)p8OjG~hfE)BcA?@uj?1{;ul#?C&i4{`VQakNwNZ6IH4g^N;UK zbkV9sN^kyieTgd3iLnk5Gn?hO+_EzC;UQ`JmQ_>TCVV?JuSq#xLWt|FPrb@W=c<9d%JGc xlOqNhpN~xO(LQBm{CE517n8DQe7gTg{cUp^cjEa5TVN0}c)I$ztaD0e0sxkM-#`EW literal 0 HcmV?d00001 diff --git a/ShadowsocksX-NG2/App/Assets.xcassets/MenuBarIcon.imageset/menubar-icon@2x.png b/ShadowsocksX-NG2/App/Assets.xcassets/MenuBarIcon.imageset/menubar-icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1dd7b3577ad4c30b8797114c8af94276767f6a GIT binary patch literal 902 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZK3>dAqwXFs$lTHUjcE3p^r=85sBugD~Uq{1quc zLG}_)Usv{5oN~MjlB@DwgRE99ag8WRNi0dVN-jzTQVd20MrOJOmbyk3AqK`)My6J# zX4(b@Rt5(8`?^5}BQ)gZr(~v8V$om#(O_%Lwgsp`18ze}W^QV6Nn&mRT#vCqh@mmi zY@j_5Jx^7RX#w>}g7gIErE^sj-Zi(`n# z@w=0KJwgISj@S1#n~E-;A?U+tD9zgGxg=^Ur?%@-SNW!khZgt>#BB#IWdh3|SBSSw)vz;w^lXO}BNFRWr!IVkMKxc%i?lX~Aq zu2*UvS3cx!D zbPWro-YmOy+>*&iFZqy=a>Ub&ZML_K#J}sfTzhtU`BbqRO)T*oLW?={t&Q%qzfhmJ zcRp8^CgTBrZv9B3(l1KN_fn>J3M^?47GcgimHAZnzUYP6bS_ixTC>V?c{8<_Oe%AG z;;`k9ZkaX1F$oo|#}BDGAlE^GqdyZDa5~OVKG*g3S;kzE iTAydP&)etMGwl2{ZQ54>AxU5YWAJqKb6Mw<&;$T1BvFC@ literal 0 HcmV?d00001 diff --git a/ShadowsocksX-NG2/App/MainApp.swift b/ShadowsocksX-NG2/App/MainApp.swift index b7d9caf9..1e6f4f35 100644 --- a/ShadowsocksX-NG2/App/MainApp.swift +++ b/ShadowsocksX-NG2/App/MainApp.swift @@ -79,7 +79,8 @@ private struct StatusMenuLabel: View { @ObservedObject var control: ProxyControlWorkflow var body: some View { - Image(systemName: "network") + Image("MenuBarIcon") + .renderingMode(.template) .accessibilityLabel("ShadowsocksX-NG2") .task { await control.resyncOnLaunch()