Skip to content

Commit 4abbc70

Browse files
committed
Feature: Change app icon
1 parent 27b6242 commit 4abbc70

File tree

6 files changed

+74
-29
lines changed

6 files changed

+74
-29
lines changed

ClashX.xcodeproj/project.pbxproj

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
495A44CD20D266BA00888A0A /* ClashXLaunchHelper.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 495A44BC20D2660A00888A0A /* ClashXLaunchHelper.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
2424
495A44D320D267D000888A0A /* LaunchAtLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495A44D220D267D000888A0A /* LaunchAtLogin.swift */; };
2525
4966E9E32118153A00A391FB /* NSUserNotificationCenter+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */; };
26+
4966E9E6211824F300A391FB /* NSImage+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4966E9E5211824F300A391FB /* NSImage+extension.swift */; };
2627
497F0DF320DE2FE50077AD41 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 497F0DF220DE2FE50077AD41 /* Icon.icns */; };
2728
4989F98020D01C8F0001E564 /* clash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4989F97E20D01C8F0001E564 /* clash.a */; };
2829
4989F98420D02D200001E564 /* Country.mmdb in Resources */ = {isa = PBXBuildFile; fileRef = 4989F98320D02D200001E564 /* Country.mmdb */; };
@@ -32,10 +33,6 @@
3233
49CF3B2120CD7463001EBF94 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CF3B2020CD7463001EBF94 /* AppDelegate.swift */; };
3334
49CF3B2520CD7465001EBF94 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B2420CD7465001EBF94 /* Assets.xcassets */; };
3435
49CF3B2820CD7465001EBF94 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B2620CD7465001EBF94 /* Main.storyboard */; };
35-
49CF3B3F20CD7845001EBF94 /* menu_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B3B20CD7845001EBF94 /* menu_icon.png */; };
36-
49CF3B4020CD7845001EBF94 /* menu_icon_disabled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B3C20CD7845001EBF94 /* menu_icon_disabled@2x.png */; };
37-
49CF3B4120CD7845001EBF94 /* menu_icon_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B3D20CD7845001EBF94 /* menu_icon_disabled.png */; };
38-
49CF3B4220CD7845001EBF94 /* menu_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B3E20CD7845001EBF94 /* menu_icon@2x.png */; };
3936
49CF3B5C20CE8068001EBF94 /* ProxyConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CF3B5B20CE8068001EBF94 /* ProxyConfigManager.swift */; };
4037
49CF3B5F20CE80D2001EBF94 /* install_proxy_helper.sh in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B5E20CE80D2001EBF94 /* install_proxy_helper.sh */; };
4138
49CF3B6320CED9CF001EBF94 /* check_proxy_helper.sh in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B6220CED934001EBF94 /* check_proxy_helper.sh */; };
@@ -92,6 +89,7 @@
9289
495A44C820D2660B00888A0A /* ClashXLaunchHelper.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ClashXLaunchHelper.entitlements; sourceTree = "<group>"; };
9390
495A44D220D267D000888A0A /* LaunchAtLogin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchAtLogin.swift; sourceTree = "<group>"; };
9491
4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSUserNotificationCenter+Extension.swift"; sourceTree = "<group>"; };
92+
4966E9E5211824F300A391FB /* NSImage+extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSImage+extension.swift"; sourceTree = "<group>"; };
9593
497F0DF220DE2FE50077AD41 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = "<group>"; };
9694
4989F97E20D01C8F0001E564 /* clash.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = clash.a; sourceTree = "<group>"; };
9795
4989F97F20D01C8F0001E564 /* clash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = clash.h; sourceTree = "<group>"; };
@@ -107,10 +105,6 @@
107105
49CF3B2920CD7465001EBF94 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
108106
49CF3B2A20CD7465001EBF94 /* ClashX.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ClashX.entitlements; sourceTree = "<group>"; };
109107
49CF3B3520CD75DF001EBF94 /* ClashX-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ClashX-Bridging-Header.h"; sourceTree = "<group>"; };
110-
49CF3B3B20CD7845001EBF94 /* menu_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_icon.png; sourceTree = "<group>"; };
111-
49CF3B3C20CD7845001EBF94 /* menu_icon_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon_disabled@2x.png"; sourceTree = "<group>"; };
112-
49CF3B3D20CD7845001EBF94 /* menu_icon_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_icon_disabled.png; sourceTree = "<group>"; };
113-
49CF3B3E20CD7845001EBF94 /* menu_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon@2x.png"; sourceTree = "<group>"; };
114108
49CF3B4B20CE5232001EBF94 /* ProxyConfig.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = ProxyConfig.xcodeproj; sourceTree = "<group>"; };
115109
49CF3B5B20CE8068001EBF94 /* ProxyConfigManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyConfigManager.swift; sourceTree = "<group>"; };
116110
49CF3B5E20CE80D2001EBF94 /* install_proxy_helper.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install_proxy_helper.sh; sourceTree = "<group>"; };
@@ -198,6 +192,7 @@
198192
4997732420D251A60009B136 /* SWBApplication.h */,
199193
495A44D220D267D000888A0A /* LaunchAtLogin.swift */,
200194
4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */,
195+
4966E9E5211824F300A391FB /* NSImage+extension.swift */,
201196
);
202197
path = Basic;
203198
sourceTree = "<group>";
@@ -251,11 +246,7 @@
251246
children = (
252247
4989F98D20D0AE990001E564 /* sampleConfig.ini */,
253248
4989F98320D02D200001E564 /* Country.mmdb */,
254-
49CF3B3D20CD7845001EBF94 /* menu_icon_disabled.png */,
255-
49CF3B3C20CD7845001EBF94 /* menu_icon_disabled@2x.png */,
256-
49CF3B3B20CD7845001EBF94 /* menu_icon.png */,
257249
492C4864210EC9E4004554A0 /* ProxyConfig */,
258-
49CF3B3E20CD7845001EBF94 /* menu_icon@2x.png */,
259250
);
260251
path = "Support Files";
261252
sourceTree = "<group>";
@@ -442,11 +433,7 @@
442433
49CF3B2520CD7465001EBF94 /* Assets.xcassets in Resources */,
443434
495340B020DE5F7200B0D3FF /* StatusItemView.xib in Resources */,
444435
49CF3B2820CD7465001EBF94 /* Main.storyboard in Resources */,
445-
49CF3B4220CD7845001EBF94 /* menu_icon@2x.png in Resources */,
446-
49CF3B4120CD7845001EBF94 /* menu_icon_disabled.png in Resources */,
447436
49CF3B5F20CE80D2001EBF94 /* install_proxy_helper.sh in Resources */,
448-
49CF3B4020CD7845001EBF94 /* menu_icon_disabled@2x.png in Resources */,
449-
49CF3B3F20CD7845001EBF94 /* menu_icon.png in Resources */,
450437
4952C3CC2116E952004A4FA8 /* PreferencesWindowController.xib in Resources */,
451438
4989F98420D02D200001E564 /* Country.mmdb in Resources */,
452439
497F0DF320DE2FE50077AD41 /* Icon.icns in Resources */,
@@ -549,6 +536,7 @@
549536
49CF3B6520CEE06C001EBF94 /* ConfigManager.swift in Sources */,
550537
4952C3BF2115C7CA004A4FA8 /* ProxyMenuItemFactory.swift in Sources */,
551538
4966E9E32118153A00A391FB /* NSUserNotificationCenter+Extension.swift in Sources */,
539+
4966E9E6211824F300A391FB /* NSImage+extension.swift in Sources */,
552540
4952C3CE2116EA2E004A4FA8 /* ProxyServerModel.swift in Sources */,
553541
);
554542
runOnlyForDeploymentPostprocessing = 0;

ClashX/AppDelegate.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
8080
.bind{ [unowned self]
8181
enable in
8282
self.proxySettingMenuItem.state = (enable ?? false) ? .on : .off
83-
let image = (enable ?? false) ?
84-
NSImage(named: NSImage.Name(rawValue: "menu_icon"))! :
85-
NSImage(named: NSImage.Name(rawValue: "menu_icon_disabled"))!
83+
let image =
84+
NSImage(named: NSImage.Name(rawValue: "menu_icon"))!.tint(color: enable! ? NSColor.black : NSColor.gray)
8685
((self.statusItem.view) as! StatusItemView).imageView.image = image
8786
}.disposed(by: disposeBag)
8887

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"images" : [
3+
{
4+
"idiom" : "universal",
5+
"scale" : "1x"
6+
},
7+
{
8+
"idiom" : "universal",
9+
"filename" : "menu_icon@2x.png",
10+
"scale" : "2x"
11+
},
12+
{
13+
"idiom" : "universal",
14+
"scale" : "3x"
15+
}
16+
],
17+
"info" : {
18+
"version" : 1,
19+
"author" : "xcode"
20+
},
21+
"properties" : {
22+
"template-rendering-intent" : "template"
23+
}
24+
}
598 Bytes
Loading

ClashX/Base.lproj/Main.storyboard

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,24 @@
8686
<modifierMask key="keyEquivalentModifierMask"/>
8787
<menu key="submenu" title="Config" id="tck-zU-JKQ">
8888
<items>
89-
<menuItem title="Generate config" id="5Ab-VJ-iIm">
89+
<menuItem title="Generate Config" id="a4G-S3-jxT">
9090
<modifierMask key="keyEquivalentModifierMask"/>
91-
<connections>
92-
<action selector="actionGenConfig:" target="Voe-Tx-rLC" id="SBd-vV-e1R"/>
93-
</connections>
91+
<menu key="submenu" title="Generate Config" id="IeJ-1Q-UaF">
92+
<items>
93+
<menuItem title="Generate config" id="5Ab-VJ-iIm">
94+
<modifierMask key="keyEquivalentModifierMask"/>
95+
<connections>
96+
<action selector="actionGenConfig:" target="Voe-Tx-rLC" id="SBd-vV-e1R"/>
97+
</connections>
98+
</menuItem>
99+
<menuItem title="Import bunch json file" id="GRE-Ra-Pkx">
100+
<modifierMask key="keyEquivalentModifierMask"/>
101+
<connections>
102+
<action selector="actionImportBunchJsonFile:" target="Voe-Tx-rLC" id="wPl-iW-WvG"/>
103+
</connections>
104+
</menuItem>
105+
</items>
106+
</menu>
94107
</menuItem>
95108
<menuItem title="Edit config Manually" id="DwE-WX-ETZ">
96109
<modifierMask key="keyEquivalentModifierMask"/>
@@ -104,12 +117,6 @@
104117
<action selector="actionUpdateConfig:" target="Voe-Tx-rLC" id="oW5-Ll-SY8"/>
105118
</connections>
106119
</menuItem>
107-
<menuItem title="Import bunch json file" id="GRE-Ra-Pkx">
108-
<modifierMask key="keyEquivalentModifierMask"/>
109-
<connections>
110-
<action selector="actionImportBunchJsonFile:" target="Voe-Tx-rLC" id="wPl-iW-WvG"/>
111-
</connections>
112-
</menuItem>
113120
</items>
114121
</menu>
115122
</menuItem>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//
2+
// NSImage+extension.swift
3+
// ClashX
4+
//
5+
// Created by CYC on 2018/8/6.
6+
// Copyright © 2018年 west2online. All rights reserved.
7+
//
8+
9+
import Foundation
10+
import AppKit
11+
12+
extension NSImage {
13+
func tint(color: NSColor) -> NSImage {
14+
let image = self.copy() as! NSImage
15+
image.lockFocus()
16+
17+
color.set()
18+
19+
let imageRect = NSRect(origin: NSZeroPoint, size: image.size)
20+
imageRect.fill(using: .sourceAtop)
21+
22+
image.unlockFocus()
23+
image.isTemplate = false
24+
25+
return image
26+
}
27+
}

0 commit comments

Comments
 (0)