From bc0a38c27da4b6c828d0bade57ee18aa64317dd9 Mon Sep 17 00:00:00 2001 From: mrFq1 <1xxbx0il0@mozmail.com> Date: Mon, 25 Sep 2023 18:07:17 +0800 Subject: [PATCH 1/6] fix: LaunchAtLogin --- ClashX/AppDelegate.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ClashX/AppDelegate.swift b/ClashX/AppDelegate.swift index b02bc0be4..0855da95f 100644 --- a/ClashX/AppDelegate.swift +++ b/ClashX/AppDelegate.swift @@ -341,9 +341,8 @@ class AppDelegate: NSObject, NSApplicationDelegate { } Logger.log("Fire helperStatusTimer") - } - func setupSystemData() { + if !PrivilegedHelperManager.shared.isHelperCheckFinished.value && ConfigManager.shared.proxyPortAutoSet { PrivilegedHelperManager.shared.isHelperCheckFinished From 6b0da117b0bd5d0bcd3ade8279e09a2451ce227f Mon Sep 17 00:00:00 2001 From: mrFq1 <1xxbx0il0@mozmail.com> Date: Sat, 7 Oct 2023 16:11:37 +0800 Subject: [PATCH 2/6] misc: swiftui target --- ClashX Meta SwiftUI-Info.plist | 130 ++ ClashX SwiftUI.xcodeproj/project.pbxproj | 1378 ----------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/swiftpm/Package.resolved | 158 -- ...etacubex.ClashX.ProxyConfigHelper.xcscheme | 79 - ClashX.xcodeproj/project.pbxproj | 565 +++++++ .../xcshareddata/swiftpm/Package.resolved | 27 + .../xcschemes/ClashX Meta SwiftUI.xcscheme | 24 +- ClashX/ViewControllers/DashboardManager.swift | 94 +- .../DashboardManagerSwiftUI.swift | 100 -- 11 files changed, 825 insertions(+), 1745 deletions(-) create mode 100644 ClashX Meta SwiftUI-Info.plist delete mode 100644 ClashX SwiftUI.xcodeproj/project.pbxproj delete mode 100644 ClashX SwiftUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 ClashX SwiftUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 ClashX SwiftUI.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 ClashX SwiftUI.xcodeproj/xcshareddata/xcschemes/com.metacubex.ClashX.ProxyConfigHelper.xcscheme rename ClashX SwiftUI.xcodeproj/xcshareddata/xcschemes/ClashX Meta.xcscheme => ClashX.xcodeproj/xcshareddata/xcschemes/ClashX Meta SwiftUI.xcscheme (75%) delete mode 100644 ClashX/ViewControllers/DashboardManagerSwiftUI.swift diff --git a/ClashX Meta SwiftUI-Info.plist b/ClashX Meta SwiftUI-Info.plist new file mode 100644 index 000000000..b7c7ab4a0 --- /dev/null +++ b/ClashX Meta SwiftUI-Info.plist @@ -0,0 +1,130 @@ + + + + + BETA + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + yaml + + CFBundleTypeName + YAML + CFBundleTypeRole + Viewer + LSHandlerRank + None + + + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLIconFile + Icon + CFBundleURLName + com.west2online.ClashX + CFBundleURLSchemes + + clashx + + + + CFBundleTypeRole + Editor + CFBundleURLIconFile + Icon + CFBundleURLName + com.west2online.Clash + CFBundleURLSchemes + + clash + + + + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + Fabric + + APIKey + e5990c61f53f0e5713e37f78458291760d631147 + Kits + + + KitInfo + + KitName + Crashlytics + + + + LSApplicationCategoryType + public.app-category.utilities + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + LSUIElement + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSAppleScriptEnabled + + NSHumanReadableCopyright + Copyright © 2021年 yichengchen. All rights reserved. + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + NSSupportsAutomaticTermination + + NSSupportsSuddenTermination + + NSUbiquitousContainers + + iCloud.com.metacubex.ClashX + + NSUbiquitousContainerIsDocumentScopePublic + + NSUbiquitousContainerName + ClashX Meta + NSUbiquitousContainerSupportedFolderLevels + Any + + + OSAScriptingDefinition + ProxySetting.sdef + SMAuthorizedClients + + identifier "com.west2online.ClashX" and anchor apple generic and certificate leaf[subject.CN] = "Mac Developer: chen yicheng (96U846XGYH)" and certificate 1[field.1.2.840.113635.100.6.2.1] /* exists */ + + SMPrivilegedExecutables + + com.west2online.ClashX.ProxyConfigHelper + anchor apple generic and identifier "com.metacubex.ClashX.ProxyConfigHelper" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = MEWHFZ92DY) + + SUDisallowSelectChannel + + SUFeedURL + https://yichengchen.github.io/clashX/appcast.xml + + diff --git a/ClashX SwiftUI.xcodeproj/project.pbxproj b/ClashX SwiftUI.xcodeproj/project.pbxproj deleted file mode 100644 index 492984f9c..000000000 --- a/ClashX SwiftUI.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1378 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 52; - objects = { - -/* Begin PBXBuildFile section */ - 011946B62A32F64600502077 /* TunModeSettingCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011946B52A32F64500502077 /* TunModeSettingCommand.swift */; }; - 011946BA2A334C4900502077 /* ClashWebViewContoller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011946B92A334C4900502077 /* ClashWebViewContoller.swift */; }; - 012875E52A2E39CD004FB615 /* ClashX Dashboard in Frameworks */ = {isa = PBXBuildFile; productRef = 012875E42A2E39CD004FB615 /* ClashX Dashboard */; }; - 013C9F422AC160D200150FCC /* TerminalCleanUpAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 013C9F3F2AC160D200150FCC /* TerminalCleanUpAction.swift */; }; - 013C9F432AC160D200150FCC /* UpdateConfigAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 013C9F402AC160D200150FCC /* UpdateConfigAction.swift */; }; - 013C9F442AC160D200150FCC /* UpdateExternalResourceAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 013C9F412AC160D200150FCC /* UpdateExternalResourceAction.swift */; }; - 0144905C2A8150920056028A /* Combine+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0144905A2A8150920056028A /* Combine+Ext.swift */; }; - 0144905D2A8150920056028A /* SpeedUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0144905B2A8150920056028A /* SpeedUtils.swift */; }; - 0144905F2A8153260056028A /* ClashWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0144905E2A8153250056028A /* ClashWindowController.swift */; }; - 015EC9432A48891000145F7F /* NormalMenuItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 015EC9422A48891000145F7F /* NormalMenuItemView.swift */; }; - 015F1E91288E42A50052B20A /* ClashMetaConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 015F1E90288E42A50052B20A /* ClashMetaConfig.swift */; }; - 015F1E92288E60D30052B20A /* MetaTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0162E74E2864B819007218A6 /* MetaTask.swift */; }; - 0162E74F2864B819007218A6 /* MetaTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0162E74E2864B819007218A6 /* MetaTask.swift */; }; - 016BEAB029D80103001586C5 /* AlphaMetaDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016BEAAF29D80102001586C5 /* AlphaMetaDownloader.swift */; }; - 018F88F9286DD0CB004DD0F7 /* DualTitleMenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 018F88F8286DD0CB004DD0F7 /* DualTitleMenuItem.swift */; }; - 0192312129DD457000539EDD /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 0192312029DD457000539EDD /* Alamofire */; }; - 0192312429DD464400539EDD /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 0192312329DD464400539EDD /* RxCocoa */; }; - 0192312629DD464400539EDD /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 0192312529DD464400539EDD /* RxSwift */; }; - 0192312929DD476A00539EDD /* SwiftyJSON in Frameworks */ = {isa = PBXBuildFile; productRef = 0192312829DD476A00539EDD /* SwiftyJSON */; }; - 0192312C29DD47FB00539EDD /* CocoaLumberjackSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 0192312B29DD47FB00539EDD /* CocoaLumberjackSwift */; }; - 0192312F29DD483100539EDD /* Starscream in Frameworks */ = {isa = PBXBuildFile; productRef = 0192312E29DD483100539EDD /* Starscream */; }; - 0192313229DD488D00539EDD /* FlexibleDiff in Frameworks */ = {isa = PBXBuildFile; productRef = 0192313129DD488D00539EDD /* FlexibleDiff */; }; - 0192313529DD48BC00539EDD /* Gzip in Frameworks */ = {isa = PBXBuildFile; productRef = 0192313429DD48BC00539EDD /* Gzip */; }; - 0192313829DD490400539EDD /* Yams in Frameworks */ = {isa = PBXBuildFile; productRef = 0192313729DD490400539EDD /* Yams */; }; - 0192313B29DD496E00539EDD /* PromiseKit in Frameworks */ = {isa = PBXBuildFile; productRef = 0192313A29DD496E00539EDD /* PromiseKit */; }; - 01943259287D19BC008CC51A /* ClashRuleProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01943258287D19BC008CC51A /* ClashRuleProvider.swift */; }; - 019A239628657A7A00AE5698 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 019A239528657A7A00AE5698 /* main.swift */; }; - 01B009AE2854533300B93618 /* geoip.dat.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01B009AC2854533200B93618 /* geoip.dat.gz */; }; - 01B009AF2854533300B93618 /* geosite.dat.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01B009AD2854533300B93618 /* geosite.dat.gz */; }; - 01B1CB082A2E1EC10073EA34 /* DashboardManagerSwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01B1CB072A2E1EC10073EA34 /* DashboardManagerSwiftUI.swift */; }; - 01B2274B29B845F100FE35C9 /* country.mmdb.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01B2274A29B845F100FE35C9 /* country.mmdb.gz */; }; - 01BC9ABE2928EB5A00F9B177 /* MetaDNS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01BC9ABD2928E5C600F9B177 /* MetaDNS.swift */; }; - 01C1462A28962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */; }; - 01C5B88D2A4FD1DB00C4E36A /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01C5B88C2A4FD1DB00C4E36A /* Logger.swift */; }; - 01E33AB229B5BF4200FD1006 /* NSColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */; }; - 01E33AB529B5C5E400FD1006 /* menu_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */; }; - 01EACC702A2F9408001C584B /* KeyboardShortcuts in Frameworks */ = {isa = PBXBuildFile; productRef = 01EACC6F2A2F9408001C584B /* KeyboardShortcuts */; }; - 01EACC722A2F9469001C584B /* SSIDSuspendTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01EACC712A2F9469001C584B /* SSIDSuspendTool.swift */; }; - 01EACC752A2F94AB001C584B /* DebugSettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01EACC732A2F94AB001C584B /* DebugSettingViewController.swift */; }; - 01EACC762A2F94AB001C584B /* GlobalShortCutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01EACC742A2F94AB001C584B /* GlobalShortCutViewController.swift */; }; - 01EACC782A2F94C7001C584B /* NSView+Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01EACC772A2F94C7001C584B /* NSView+Layout.swift */; }; - 4913C82321157D0200F6B87C /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4913C82221157D0200F6B87C /* Notification.swift */; }; - 491E6203258A424D00313AEF /* CommonUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 491E61FD258A424500313AEF /* CommonUtils.m */; }; - 49228457270AADE20027A4B6 /* RemoteConfigUpdateIntervalSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49228456270AADE20027A4B6 /* RemoteConfigUpdateIntervalSettingView.swift */; }; - 4929F67F258CE04700A435F6 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4929F67E258CE04700A435F6 /* Settings.swift */; }; - 4929F684258CE07500A435F6 /* UserDefaultWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4929F683258CE07500A435F6 /* UserDefaultWrapper.swift */; }; - 492C4869210EE6B9004554A0 /* ApiRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 492C4868210EE6B9004554A0 /* ApiRequest.swift */; }; - 492C4871210EF62E004554A0 /* ClashConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 492C4870210EF62E004554A0 /* ClashConfig.swift */; }; - 493A9F282453E60400D35296 /* ProxyDelayHistoryMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 493A9F272453E60400D35296 /* ProxyDelayHistoryMenu.swift */; }; - 493AEAE3221AE3420016FE98 /* AppVersionUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 493AEAE2221AE3420016FE98 /* AppVersionUtil.swift */; }; - 493AEAE5221AE7230016FE98 /* ProxyMenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 493AEAE4221AE7230016FE98 /* ProxyMenuItem.swift */; }; - 4949D154213242F600EF85E6 /* Paths.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4949D153213242F600EF85E6 /* Paths.swift */; }; - 4952C3BF2115C7CA004A4FA8 /* MenuItemFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4952C3BE2115C7CA004A4FA8 /* MenuItemFactory.swift */; }; - 4952C3D02117027C004A4FA8 /* ConfigFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4952C3CF2117027C004A4FA8 /* ConfigFileManager.swift */; }; - 495340B020DE5F7200B0D3FF /* StatusItemView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 495340AF20DE5F7200B0D3FF /* StatusItemView.xib */; }; - 495340B320DE68C300B0D3FF /* StatusItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495340B220DE68C300B0D3FF /* StatusItemView.swift */; }; - 495A44D320D267D000888A0A /* LaunchAtLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495A44D220D267D000888A0A /* LaunchAtLogin.swift */; }; - 495BFB8821919B9800C8779D /* RemoteConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495BFB8721919B9800C8779D /* RemoteConfigManager.swift */; }; - 4966E9E32118153A00A391FB /* NSUserNotificationCenter+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */; }; - 49722FEF211F338B00650A41 /* FileEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49722FEA211F338B00650A41 /* FileEvent.swift */; }; - 49722FF0211F338B00650A41 /* EventStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49722FEB211F338B00650A41 /* EventStream.swift */; }; - 49722FF1211F338B00650A41 /* Witness.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49722FEC211F338B00650A41 /* Witness.swift */; }; - 49761DA721C9497000AE13EF /* dashboard in Resources */ = {isa = PBXBuildFile; fileRef = 49761DA621C9497000AE13EF /* dashboard */; }; - 49769FB427E9B3E400E3D664 /* LoginKitWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 49D8276727E9B01700159D93 /* LoginKitWrapper.m */; }; - 4981C88B216BAE4A008CC14A /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4981C88D216BAE4A008CC14A /* Localizable.strings */; }; - 4982F51F2344A216008804B0 /* Cgo+Convert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4982F51E2344A216008804B0 /* Cgo+Convert.swift */; }; - 49862FA0218418C600A1D5EC /* ClashRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49862F9F218418C600A1D5EC /* ClashRule.swift */; }; - 4989F98E20D0AE990001E564 /* sampleConfig.yaml in Resources */ = {isa = PBXBuildFile; fileRef = 4989F98D20D0AE990001E564 /* sampleConfig.yaml */; }; - 498BC2532929CC2A00CA8084 /* SettingTabViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 498BC2522929CC2A00CA8084 /* SettingTabViewController.swift */; }; - 498BC2552929CCAE00CA8084 /* GeneralSettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 498BC2542929CCAE00CA8084 /* GeneralSettingViewController.swift */; }; - 499A485522ED707300F6C675 /* RemoteConfigViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499A485322ED707300F6C675 /* RemoteConfigViewController.swift */; }; - 499A485822ED715200F6C675 /* RemoteConfigModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499A485722ED715200F6C675 /* RemoteConfigModel.swift */; }; - 499A485A22ED781100F6C675 /* RemoteConfigAddView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 499A485922ED781100F6C675 /* RemoteConfigAddView.xib */; }; - 499A485C22ED793C00F6C675 /* NSView+Nib.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499A485B22ED793C00F6C675 /* NSView+Nib.swift */; }; - 499A485E22ED9B7C00F6C675 /* NSTableView+Reload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499A485D22ED9B7C00F6C675 /* NSTableView+Reload.swift */; }; - 499A486522EEA3FD00F6C675 /* Array+Safe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499A486422EEA3FC00F6C675 /* Array+Safe.swift */; }; - 499ADAFD2498CC5900C488FE /* RemoteControlManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499ADAFC2498CC5900C488FE /* RemoteControlManager.swift */; }; - 499ADAFF2498FC6D00C488FE /* ExternalControlViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499ADAFE2498FC6D00C488FE /* ExternalControlViewController.swift */; }; - 49ABB749236B0F9E00535CD7 /* UnsafePointer+bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49ABB748236B0F9E00535CD7 /* UnsafePointer+bridge.swift */; }; - 49B1086A216A356D0064FFCE /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49B10869216A356D0064FFCE /* String+Extension.swift */; }; - 49B445162457CDF000B27E3E /* ClashStatusTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49B445152457CDF000B27E3E /* ClashStatusTool.swift */; }; - 49B4575D244F4A2A00463C39 /* PrivilegedHelperManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49B4575C244F4A2A00463C39 /* PrivilegedHelperManager.swift */; }; - 49B4575F244FD4D100463C39 /* PrivilegedHelperManager+Legacy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49B4575E244FD4D100463C39 /* PrivilegedHelperManager+Legacy.swift */; }; - 49BB31E7246853EA008A4CB0 /* ICloudManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49BB31E6246853EA008A4CB0 /* ICloudManager.swift */; }; - 49BC061C212931F4005A0FE7 /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49BC061B212931F4005A0FE7 /* AboutViewController.swift */; }; - 49C9EF64223E78F5005D8B6A /* ClashProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49C9EF63223E78F5005D8B6A /* ClashProxy.swift */; }; - 49CF3B2120CD7463001EBF94 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CF3B2020CD7463001EBF94 /* AppDelegate.swift */; }; - 49CF3B2820CD7465001EBF94 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B2620CD7465001EBF94 /* Main.storyboard */; }; - 49CF3B5C20CE8068001EBF94 /* ClashResourceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CF3B5B20CE8068001EBF94 /* ClashResourceManager.swift */; }; - 49CF3B6520CEE06C001EBF94 /* ConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CF3B6420CEE06C001EBF94 /* ConfigManager.swift */; }; - 49D176A72355FE680093DD7B /* NetworkChangeNotifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D176A62355FE680093DD7B /* NetworkChangeNotifier.swift */; }; - 49D176A9235614340093DD7B /* ProxyGroupSpeedTestMenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D176A8235614340093DD7B /* ProxyGroupSpeedTestMenuItem.swift */; }; - 49D176AB23575BB20093DD7B /* ProxyGroupMenuItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D176AA23575BB20093DD7B /* ProxyGroupMenuItemView.swift */; }; - 49D6A45229AEEC15006487EF /* StatusItemTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D6A45129AEEC15006487EF /* StatusItemTool.swift */; }; - 49D6A45629AEEC55006487EF /* StatusItemViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D6A45529AEEC55006487EF /* StatusItemViewProtocol.swift */; }; - 8A2BBEA727A03ACB0081EBEF /* ProxySetting.sdef in Resources */ = {isa = PBXBuildFile; fileRef = 8A2BBEA627A03ACB0081EBEF /* ProxySetting.sdef */; }; - 8ACD21BB27A04C7800BC4632 /* ProxySettingCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ACD21BA27A04C7800BC4632 /* ProxySettingCommand.swift */; }; - 8ACD21BD27A04ED500BC4632 /* ProxyModeChangeCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ACD21BC27A04ED500BC4632 /* ProxyModeChangeCommand.swift */; }; - F910AA24240134AF00116E95 /* ProxyGroupMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = F910AA23240134AF00116E95 /* ProxyGroupMenu.swift */; }; - F915A4622366ADEF004840BE /* ClashConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = F915A4612366ADEF004840BE /* ClashConnection.swift */; }; - F9203A26236342820020D57D /* AppDelegate+..swift in Sources */ = {isa = PBXBuildFile; fileRef = F9203A25236342820020D57D /* AppDelegate+..swift */; }; - F92D0B24236BC12000575E15 /* SavedProxyModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F92D0B23236BC12000575E15 /* SavedProxyModel.swift */; }; - F92D0B2A236C759100575E15 /* NSTextField+Vibrancy.swift in Sources */ = {isa = PBXBuildFile; fileRef = F92D0B29236C759100575E15 /* NSTextField+Vibrancy.swift */; }; - F92D0B2C236C7C3600575E15 /* MenuItemBaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F92D0B2B236C7C3600575E15 /* MenuItemBaseView.swift */; }; - F92D0B2E236D35C000575E15 /* ProxyItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F92D0B2D236D35C000575E15 /* ProxyItemView.swift */; }; - F935B2F02307C52E009E4D33 /* com.metacubex.ClashX.ProxyConfigHelper in Copy Files */ = {isa = PBXBuildFile; fileRef = F9A7C0692306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - F935B2F42307CD32009E4D33 /* ProxyConfigHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = F935B2F32307CD32009E4D33 /* ProxyConfigHelper.m */; }; - F935B2FA23083EE6009E4D33 /* ProxySettingTool.m in Sources */ = {isa = PBXBuildFile; fileRef = F935B2F923083EE6009E4D33 /* ProxySettingTool.m */; }; - F935B2FC23085515009E4D33 /* SystemProxyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F935B2FB23085515009E4D33 /* SystemProxyManager.swift */; }; - F939724C23A4B33500FE5A3F /* ClashProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F939724B23A4B33500FE5A3F /* ClashProvider.swift */; }; - F939724E23A4DB0600FE5A3F /* DateFormatter+.swift in Sources */ = {isa = PBXBuildFile; fileRef = F939724D23A4DB0600FE5A3F /* DateFormatter+.swift */; }; - F976275C23634DF8000EDEFE /* LoginServiceKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = F976275B23634DF8000EDEFE /* LoginServiceKit.swift */; }; - F977FAAC2366790500C17F1F /* AutoUpgardeManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F977FAAB2366790500C17F1F /* AutoUpgardeManager.swift */; }; - F977FAAE23669D6400C17F1F /* ConnectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F977FAAD23669D6400C17F1F /* ConnectionManager.swift */; }; - F9E754D0239CC21F00CEE7CC /* WebPortalManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9E754CF239CC21F00CEE7CC /* WebPortalManager.swift */; }; - F9E754D2239CC28D00CEE7CC /* NSAlert+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9E754D1239CC28D00CEE7CC /* NSAlert+Extension.swift */; }; - F9E8F34623A12B89002DE5E8 /* String+Encode.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9E8F34523A12B89002DE5E8 /* String+Encode.swift */; }; - F9FAB31E262BE04800DE02A6 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F9FAB31D262BE04800DE02A6 /* Images.xcassets */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - F935B2EB2307B7CD009E4D33 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 49CF3B1520CD7463001EBF94 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F9A7C0682306E874007163C7; - remoteInfo = ProxyConfigHelper; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 663E4677213FCDC4006F11BB /* Copy Files */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = Contents/Library/LaunchServices; - dstSubfolderSpec = 1; - files = ( - F935B2F02307C52E009E4D33 /* com.metacubex.ClashX.ProxyConfigHelper in Copy Files */, - ); - name = "Copy Files"; - runOnlyForDeploymentPostprocessing = 0; - }; - F9A7C0672306E874007163C7 /* Copy Files */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - name = "Copy Files"; - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 011946B52A32F64500502077 /* TunModeSettingCommand.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TunModeSettingCommand.swift; sourceTree = ""; }; - 011946B92A334C4900502077 /* ClashWebViewContoller.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClashWebViewContoller.swift; sourceTree = ""; }; - 013C9F3F2AC160D200150FCC /* TerminalCleanUpAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TerminalCleanUpAction.swift; sourceTree = ""; }; - 013C9F402AC160D200150FCC /* UpdateConfigAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateConfigAction.swift; sourceTree = ""; }; - 013C9F412AC160D200150FCC /* UpdateExternalResourceAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateExternalResourceAction.swift; sourceTree = ""; }; - 0144905A2A8150920056028A /* Combine+Ext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Combine+Ext.swift"; sourceTree = ""; }; - 0144905B2A8150920056028A /* SpeedUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpeedUtils.swift; sourceTree = ""; }; - 0144905E2A8153250056028A /* ClashWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClashWindowController.swift; sourceTree = ""; }; - 015EC9422A48891000145F7F /* NormalMenuItemView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NormalMenuItemView.swift; sourceTree = ""; }; - 015F1E90288E42A50052B20A /* ClashMetaConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClashMetaConfig.swift; sourceTree = ""; }; - 0162E74D2864B818007218A6 /* com.metacubex.ClashX.ProxyConfigHelper-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "com.metacubex.ClashX.ProxyConfigHelper-Bridging-Header.h"; sourceTree = ""; }; - 0162E74E2864B819007218A6 /* MetaTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetaTask.swift; sourceTree = ""; }; - 016BEAAF29D80102001586C5 /* AlphaMetaDownloader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlphaMetaDownloader.swift; sourceTree = ""; }; - 018F88F8286DD0CB004DD0F7 /* DualTitleMenuItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DualTitleMenuItem.swift; sourceTree = ""; }; - 01943258287D19BC008CC51A /* ClashRuleProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClashRuleProvider.swift; sourceTree = ""; }; - 019A239528657A7A00AE5698 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; - 01B009AC2854533200B93618 /* geoip.dat.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = geoip.dat.gz; sourceTree = ""; }; - 01B009AD2854533300B93618 /* geosite.dat.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = geosite.dat.gz; sourceTree = ""; }; - 01B1CB072A2E1EC10073EA34 /* DashboardManagerSwiftUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardManagerSwiftUI.swift; sourceTree = ""; }; - 01B2274A29B845F100FE35C9 /* country.mmdb.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = country.mmdb.gz; sourceTree = ""; }; - 01BC9ABD2928E5C600F9B177 /* MetaDNS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetaDNS.swift; sourceTree = ""; }; - 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = com.metacubex.ClashX.ProxyConfigHelper.meta.gz; sourceTree = ""; }; - 01C5B88C2A4FD1DB00C4E36A /* Logger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; - 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSColor+Extension.swift"; sourceTree = ""; }; - 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon@2x.png"; sourceTree = ""; }; - 01EACC712A2F9469001C584B /* SSIDSuspendTool.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SSIDSuspendTool.swift; sourceTree = ""; }; - 01EACC732A2F94AB001C584B /* DebugSettingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DebugSettingViewController.swift; sourceTree = ""; }; - 01EACC742A2F94AB001C584B /* GlobalShortCutViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlobalShortCutViewController.swift; sourceTree = ""; }; - 01EACC772A2F94C7001C584B /* NSView+Layout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSView+Layout.swift"; sourceTree = ""; }; - 4913C82221157D0200F6B87C /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = ""; }; - 491E61FC258A424500313AEF /* CommonUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommonUtils.h; sourceTree = ""; }; - 491E61FD258A424500313AEF /* CommonUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CommonUtils.m; sourceTree = ""; }; - 49228456270AADE20027A4B6 /* RemoteConfigUpdateIntervalSettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteConfigUpdateIntervalSettingView.swift; sourceTree = ""; }; - 4929F67E258CE04700A435F6 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = ""; }; - 4929F683258CE07500A435F6 /* UserDefaultWrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserDefaultWrapper.swift; sourceTree = ""; }; - 492C4868210EE6B9004554A0 /* ApiRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApiRequest.swift; sourceTree = ""; }; - 492C4870210EF62E004554A0 /* ClashConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClashConfig.swift; sourceTree = ""; }; - 493A9F272453E60400D35296 /* ProxyDelayHistoryMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyDelayHistoryMenu.swift; sourceTree = ""; }; - 493AEAE2221AE3420016FE98 /* AppVersionUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppVersionUtil.swift; sourceTree = ""; }; - 493AEAE4221AE7230016FE98 /* ProxyMenuItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyMenuItem.swift; sourceTree = ""; }; - 4949D153213242F600EF85E6 /* Paths.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Paths.swift; sourceTree = ""; }; - 4952C3BE2115C7CA004A4FA8 /* MenuItemFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuItemFactory.swift; sourceTree = ""; }; - 4952C3CF2117027C004A4FA8 /* ConfigFileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigFileManager.swift; sourceTree = ""; }; - 495340AF20DE5F7200B0D3FF /* StatusItemView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = StatusItemView.xib; path = ClashX/Views/StatusItem/StatusItemView.xib; sourceTree = SOURCE_ROOT; }; - 495340B220DE68C300B0D3FF /* StatusItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusItemView.swift; sourceTree = ""; }; - 495A44D220D267D000888A0A /* LaunchAtLogin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchAtLogin.swift; sourceTree = ""; }; - 495BFB8721919B9800C8779D /* RemoteConfigManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteConfigManager.swift; sourceTree = ""; }; - 4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSUserNotificationCenter+Extension.swift"; sourceTree = ""; }; - 49722FEA211F338B00650A41 /* FileEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileEvent.swift; sourceTree = ""; }; - 49722FEB211F338B00650A41 /* EventStream.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EventStream.swift; sourceTree = ""; }; - 49722FEC211F338B00650A41 /* Witness.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Witness.swift; sourceTree = ""; }; - 49722FED211F338B00650A41 /* Witness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Witness.h; sourceTree = ""; }; - 49761DA621C9497000AE13EF /* dashboard */ = {isa = PBXFileReference; lastKnownFileType = folder; path = dashboard; sourceTree = ""; }; - 4981C887216BAB8A008CC14A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = ""; }; - 4981C88C216BAE4A008CC14A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; - 4981C88E216BAE4D008CC14A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; - 4982F51E2344A216008804B0 /* Cgo+Convert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Cgo+Convert.swift"; sourceTree = ""; }; - 49862F9F218418C600A1D5EC /* ClashRule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClashRule.swift; sourceTree = ""; }; - 498960722340F21C00AFB7EC /* com.metacubex.ClashX.ProxyConfigHelper.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = com.metacubex.ClashX.ProxyConfigHelper.entitlements; sourceTree = ""; }; - 4989F98D20D0AE990001E564 /* sampleConfig.yaml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.yaml; path = sampleConfig.yaml; sourceTree = ""; }; - 498BC2522929CC2A00CA8084 /* SettingTabViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingTabViewController.swift; sourceTree = ""; }; - 498BC2542929CCAE00CA8084 /* GeneralSettingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeneralSettingViewController.swift; sourceTree = ""; }; - 499A485322ED707300F6C675 /* RemoteConfigViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteConfigViewController.swift; sourceTree = ""; }; - 499A485722ED715200F6C675 /* RemoteConfigModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteConfigModel.swift; sourceTree = ""; }; - 499A485922ED781100F6C675 /* RemoteConfigAddView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RemoteConfigAddView.xib; sourceTree = ""; }; - 499A485B22ED793C00F6C675 /* NSView+Nib.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSView+Nib.swift"; sourceTree = ""; }; - 499A485D22ED9B7C00F6C675 /* NSTableView+Reload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSTableView+Reload.swift"; sourceTree = ""; }; - 499A486422EEA3FC00F6C675 /* Array+Safe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Array+Safe.swift"; sourceTree = ""; }; - 499ADAFC2498CC5900C488FE /* RemoteControlManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteControlManager.swift; sourceTree = ""; }; - 499ADAFE2498FC6D00C488FE /* ExternalControlViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalControlViewController.swift; sourceTree = ""; }; - 49ABB748236B0F9E00535CD7 /* UnsafePointer+bridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UnsafePointer+bridge.swift"; sourceTree = ""; }; - 49B10869216A356D0064FFCE /* String+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = ""; }; - 49B445152457CDF000B27E3E /* ClashStatusTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClashStatusTool.swift; sourceTree = ""; }; - 49B4575C244F4A2A00463C39 /* PrivilegedHelperManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivilegedHelperManager.swift; sourceTree = ""; }; - 49B4575E244FD4D100463C39 /* PrivilegedHelperManager+Legacy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PrivilegedHelperManager+Legacy.swift"; sourceTree = ""; }; - 49BB31E6246853EA008A4CB0 /* ICloudManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICloudManager.swift; sourceTree = ""; }; - 49BC061B212931F4005A0FE7 /* AboutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = ""; }; - 49C9EF63223E78F5005D8B6A /* ClashProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClashProxy.swift; sourceTree = ""; }; - 49CF3B1D20CD7463001EBF94 /* ClashX Meta.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ClashX Meta.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 49CF3B2020CD7463001EBF94 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 49CF3B2720CD7465001EBF94 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 49CF3B2920CD7465001EBF94 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 49CF3B2A20CD7465001EBF94 /* ClashX.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ClashX.entitlements; sourceTree = ""; }; - 49CF3B3520CD75DF001EBF94 /* ClashX-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ClashX-Bridging-Header.h"; sourceTree = ""; }; - 49CF3B5B20CE8068001EBF94 /* ClashResourceManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClashResourceManager.swift; sourceTree = ""; }; - 49CF3B6420CEE06C001EBF94 /* ConfigManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigManager.swift; sourceTree = ""; }; - 49D176A62355FE680093DD7B /* NetworkChangeNotifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkChangeNotifier.swift; sourceTree = ""; }; - 49D176A8235614340093DD7B /* ProxyGroupSpeedTestMenuItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyGroupSpeedTestMenuItem.swift; sourceTree = ""; }; - 49D176AA23575BB20093DD7B /* ProxyGroupMenuItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyGroupMenuItemView.swift; sourceTree = ""; }; - 49D6A45129AEEC15006487EF /* StatusItemTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusItemTool.swift; sourceTree = ""; }; - 49D6A45529AEEC55006487EF /* StatusItemViewProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusItemViewProtocol.swift; sourceTree = ""; }; - 49D8276627E9B01700159D93 /* LoginKitWrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginKitWrapper.h; sourceTree = ""; }; - 49D8276727E9B01700159D93 /* LoginKitWrapper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginKitWrapper.m; sourceTree = ""; }; - 8A2BBEA627A03ACB0081EBEF /* ProxySetting.sdef */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = ProxySetting.sdef; sourceTree = ""; }; - 8ACD21BA27A04C7800BC4632 /* ProxySettingCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxySettingCommand.swift; sourceTree = ""; }; - 8ACD21BC27A04ED500BC4632 /* ProxyModeChangeCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyModeChangeCommand.swift; sourceTree = ""; }; - F910AA23240134AF00116E95 /* ProxyGroupMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyGroupMenu.swift; sourceTree = ""; }; - F915A4612366ADEF004840BE /* ClashConnection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClashConnection.swift; sourceTree = ""; }; - F9203A25236342820020D57D /* AppDelegate+..swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+..swift"; sourceTree = ""; }; - F92D0B23236BC12000575E15 /* SavedProxyModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SavedProxyModel.swift; sourceTree = ""; }; - F92D0B29236C759100575E15 /* NSTextField+Vibrancy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSTextField+Vibrancy.swift"; sourceTree = ""; }; - F92D0B2B236C7C3600575E15 /* MenuItemBaseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuItemBaseView.swift; sourceTree = ""; }; - F92D0B2D236D35C000575E15 /* ProxyItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyItemView.swift; sourceTree = ""; }; - F935B2EA2307B6BA009E4D33 /* Helper-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Helper-Info.plist"; sourceTree = ""; }; - F935B2F12307C802009E4D33 /* Helper-Launchd.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Helper-Launchd.plist"; sourceTree = ""; }; - F935B2F22307CD32009E4D33 /* ProxyConfigHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProxyConfigHelper.h; sourceTree = ""; }; - F935B2F32307CD32009E4D33 /* ProxyConfigHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ProxyConfigHelper.m; sourceTree = ""; }; - F935B2F52307D00D009E4D33 /* ProxyConfigRemoteProcessProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProxyConfigRemoteProcessProtocol.h; sourceTree = ""; }; - F935B2F823083EE6009E4D33 /* ProxySettingTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProxySettingTool.h; sourceTree = ""; }; - F935B2F923083EE6009E4D33 /* ProxySettingTool.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ProxySettingTool.m; sourceTree = ""; }; - F935B2FB23085515009E4D33 /* SystemProxyManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemProxyManager.swift; sourceTree = ""; }; - F939724B23A4B33500FE5A3F /* ClashProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClashProvider.swift; sourceTree = ""; }; - F939724D23A4DB0600FE5A3F /* DateFormatter+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+.swift"; sourceTree = ""; }; - F976275B23634DF8000EDEFE /* LoginServiceKit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginServiceKit.swift; sourceTree = ""; }; - F977FAAB2366790500C17F1F /* AutoUpgardeManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoUpgardeManager.swift; sourceTree = ""; }; - F977FAAD23669D6400C17F1F /* ConnectionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectionManager.swift; sourceTree = ""; }; - F9A7C0692306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = com.metacubex.ClashX.ProxyConfigHelper; sourceTree = BUILT_PRODUCTS_DIR; }; - F9E754CF239CC21F00CEE7CC /* WebPortalManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebPortalManager.swift; sourceTree = ""; }; - F9E754D1239CC28D00CEE7CC /* NSAlert+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSAlert+Extension.swift"; sourceTree = ""; }; - F9E8F34523A12B89002DE5E8 /* String+Encode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Encode.swift"; sourceTree = ""; }; - F9FAB31D262BE04800DE02A6 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 49CF3B1A20CD7463001EBF94 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0192312629DD464400539EDD /* RxSwift in Frameworks */, - 0192313829DD490400539EDD /* Yams in Frameworks */, - 0192312429DD464400539EDD /* RxCocoa in Frameworks */, - 0192312929DD476A00539EDD /* SwiftyJSON in Frameworks */, - 0192312129DD457000539EDD /* Alamofire in Frameworks */, - 01EACC702A2F9408001C584B /* KeyboardShortcuts in Frameworks */, - 0192313B29DD496E00539EDD /* PromiseKit in Frameworks */, - 0192312C29DD47FB00539EDD /* CocoaLumberjackSwift in Frameworks */, - 012875E52A2E39CD004FB615 /* ClashX Dashboard in Frameworks */, - 0192312F29DD483100539EDD /* Starscream in Frameworks */, - 0192313529DD48BC00539EDD /* Gzip in Frameworks */, - 0192313229DD488D00539EDD /* FlexibleDiff in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9A7C0662306E874007163C7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 011BFE4E2A27A7500027AD15 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; - 013C9F3E2AC160D200150FCC /* Actions */ = { - isa = PBXGroup; - children = ( - 013C9F412AC160D200150FCC /* UpdateExternalResourceAction.swift */, - 013C9F3F2AC160D200150FCC /* TerminalCleanUpAction.swift */, - 013C9F402AC160D200150FCC /* UpdateConfigAction.swift */, - ); - path = Actions; - sourceTree = ""; - }; - 4913C82021157CEB00F6B87C /* Macro */ = { - isa = PBXGroup; - children = ( - 4913C82221157D0200F6B87C /* Notification.swift */, - 4949D153213242F600EF85E6 /* Paths.swift */, - ); - path = Macro; - sourceTree = ""; - }; - 491C24FF21BD558B00AB5D44 /* Extensions */ = { - isa = PBXGroup; - children = ( - 499A486422EEA3FC00F6C675 /* Array+Safe.swift */, - 4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */, - 499A485B22ED793C00F6C675 /* NSView+Nib.swift */, - 499A485D22ED9B7C00F6C675 /* NSTableView+Reload.swift */, - 4982F51E2344A216008804B0 /* Cgo+Convert.swift */, - F9203A25236342820020D57D /* AppDelegate+..swift */, - F92D0B29236C759100575E15 /* NSTextField+Vibrancy.swift */, - F9E754D1239CC28D00CEE7CC /* NSAlert+Extension.swift */, - F9E8F34523A12B89002DE5E8 /* String+Encode.swift */, - F939724D23A4DB0600FE5A3F /* DateFormatter+.swift */, - 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 491C250021BD55B900AB5D44 /* Utils */ = { - isa = PBXGroup; - children = ( - 493AEAE2221AE3420016FE98 /* AppVersionUtil.swift */, - 49D176A62355FE680093DD7B /* NetworkChangeNotifier.swift */, - 49B445152457CDF000B27E3E /* ClashStatusTool.swift */, - 01EACC712A2F9469001C584B /* SSIDSuspendTool.swift */, - ); - path = Utils; - sourceTree = ""; - }; - 491C250121BD561200AB5D44 /* Managers */ = { - isa = PBXGroup; - children = ( - 4952C3CF2117027C004A4FA8 /* ConfigFileManager.swift */, - 49CF3B5B20CE8068001EBF94 /* ClashResourceManager.swift */, - 49CF3B6420CEE06C001EBF94 /* ConfigManager.swift */, - 495BFB8721919B9800C8779D /* RemoteConfigManager.swift */, - 4952C3BE2115C7CA004A4FA8 /* MenuItemFactory.swift */, - F935B2FB23085515009E4D33 /* SystemProxyManager.swift */, - F977FAAB2366790500C17F1F /* AutoUpgardeManager.swift */, - F977FAAD23669D6400C17F1F /* ConnectionManager.swift */, - F9E754CF239CC21F00CEE7CC /* WebPortalManager.swift */, - 49B4575C244F4A2A00463C39 /* PrivilegedHelperManager.swift */, - 49B4575E244FD4D100463C39 /* PrivilegedHelperManager+Legacy.swift */, - 49BB31E6246853EA008A4CB0 /* ICloudManager.swift */, - 499ADAFC2498CC5900C488FE /* RemoteControlManager.swift */, - 4929F67E258CE04700A435F6 /* Settings.swift */, - ); - path = Managers; - sourceTree = ""; - }; - 492C4866210EE69B004554A0 /* General */ = { - isa = PBXGroup; - children = ( - 491C250121BD561200AB5D44 /* Managers */, - 491C250021BD55B900AB5D44 /* Utils */, - 492C4868210EE6B9004554A0 /* ApiRequest.swift */, - 015F1E90288E42A50052B20A /* ClashMetaConfig.swift */, - 016BEAAF29D80102001586C5 /* AlphaMetaDownloader.swift */, - ); - path = General; - sourceTree = ""; - }; - 492C486E210EF621004554A0 /* Models */ = { - isa = PBXGroup; - children = ( - 492C4870210EF62E004554A0 /* ClashConfig.swift */, - 49862F9F218418C600A1D5EC /* ClashRule.swift */, - 49C9EF63223E78F5005D8B6A /* ClashProxy.swift */, - 499A485722ED715200F6C675 /* RemoteConfigModel.swift */, - F915A4612366ADEF004840BE /* ClashConnection.swift */, - F92D0B23236BC12000575E15 /* SavedProxyModel.swift */, - F939724B23A4B33500FE5A3F /* ClashProvider.swift */, - 01943258287D19BC008CC51A /* ClashRuleProvider.swift */, - ); - path = Models; - sourceTree = ""; - }; - 4931969C21631F2E00A8E6E7 /* Views */ = { - isa = PBXGroup; - children = ( - 49BC1B4029AEEBBB002007B1 /* StatusItem */, - F92D0B2B236C7C3600575E15 /* MenuItemBaseView.swift */, - 49D176AA23575BB20093DD7B /* ProxyGroupMenuItemView.swift */, - 49D176A8235614340093DD7B /* ProxyGroupSpeedTestMenuItem.swift */, - F92D0B2D236D35C000575E15 /* ProxyItemView.swift */, - 493AEAE4221AE7230016FE98 /* ProxyMenuItem.swift */, - 499A485922ED781100F6C675 /* RemoteConfigAddView.xib */, - F910AA23240134AF00116E95 /* ProxyGroupMenu.swift */, - 493A9F272453E60400D35296 /* ProxyDelayHistoryMenu.swift */, - 49228456270AADE20027A4B6 /* RemoteConfigUpdateIntervalSettingView.swift */, - 018F88F8286DD0CB004DD0F7 /* DualTitleMenuItem.swift */, - 015EC9422A48891000145F7F /* NormalMenuItemView.swift */, - ); - path = Views; - sourceTree = ""; - }; - 49722FDD211ED2A900650A41 /* Vendor */ = { - isa = PBXGroup; - children = ( - 4929F683258CE07500A435F6 /* UserDefaultWrapper.swift */, - F976275D23634F18000EDEFE /* LoginServiceKit */, - 49722FE9211F338B00650A41 /* Witness */, - 49D8276627E9B01700159D93 /* LoginKitWrapper.h */, - 49D8276727E9B01700159D93 /* LoginKitWrapper.m */, - ); - path = Vendor; - sourceTree = ""; - }; - 49722FE9211F338B00650A41 /* Witness */ = { - isa = PBXGroup; - children = ( - 49722FEA211F338B00650A41 /* FileEvent.swift */, - 49722FEB211F338B00650A41 /* EventStream.swift */, - 49722FEC211F338B00650A41 /* Witness.swift */, - 49722FED211F338B00650A41 /* Witness.h */, - ); - path = Witness; - sourceTree = ""; - }; - 49761DA521C9490400AE13EF /* Resources */ = { - isa = PBXGroup; - children = ( - 01B2274A29B845F100FE35C9 /* country.mmdb.gz */, - 01B009AC2854533200B93618 /* geoip.dat.gz */, - 01B009AD2854533300B93618 /* geosite.dat.gz */, - 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */, - 49761DA621C9497000AE13EF /* dashboard */, - 4989F98D20D0AE990001E564 /* sampleConfig.yaml */, - 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */, - ); - path = Resources; - sourceTree = ""; - }; - 4989F98520D0AA300001E564 /* ViewControllers */ = { - isa = PBXGroup; - children = ( - 498BC2512929CC0A00CA8084 /* Settings */, - 49BC061B212931F4005A0FE7 /* AboutViewController.swift */, - 01B1CB072A2E1EC10073EA34 /* DashboardManagerSwiftUI.swift */, - 011946B92A334C4900502077 /* ClashWebViewContoller.swift */, - 499A485322ED707300F6C675 /* RemoteConfigViewController.swift */, - 499ADAFE2498FC6D00C488FE /* ExternalControlViewController.swift */, - ); - path = ViewControllers; - sourceTree = ""; - }; - 498BC2512929CC0A00CA8084 /* Settings */ = { - isa = PBXGroup; - children = ( - 498BC2522929CC2A00CA8084 /* SettingTabViewController.swift */, - 01EACC732A2F94AB001C584B /* DebugSettingViewController.swift */, - 01EACC742A2F94AB001C584B /* GlobalShortCutViewController.swift */, - 498BC2542929CCAE00CA8084 /* GeneralSettingViewController.swift */, - ); - path = Settings; - sourceTree = ""; - }; - 4997732220D251A60009B136 /* Basic */ = { - isa = PBXGroup; - children = ( - 495A44D220D267D000888A0A /* LaunchAtLogin.swift */, - 01C5B88C2A4FD1DB00C4E36A /* Logger.swift */, - 01EACC772A2F94C7001C584B /* NSView+Layout.swift */, - 49B10869216A356D0064FFCE /* String+Extension.swift */, - 49ABB748236B0F9E00535CD7 /* UnsafePointer+bridge.swift */, - 0144905B2A8150920056028A /* SpeedUtils.swift */, - 0144905A2A8150920056028A /* Combine+Ext.swift */, - ); - path = Basic; - sourceTree = ""; - }; - 49BC1B4029AEEBBB002007B1 /* StatusItem */ = { - isa = PBXGroup; - children = ( - 495340AF20DE5F7200B0D3FF /* StatusItemView.xib */, - 495340B220DE68C300B0D3FF /* StatusItemView.swift */, - 49D6A45129AEEC15006487EF /* StatusItemTool.swift */, - 49D6A45529AEEC55006487EF /* StatusItemViewProtocol.swift */, - ); - path = StatusItem; - sourceTree = ""; - }; - 49CF3B1420CD7463001EBF94 = { - isa = PBXGroup; - children = ( - 49CF3B1F20CD7463001EBF94 /* ClashX */, - F9A7C06A2306E874007163C7 /* ProxyConfigHelper */, - 49CF3B1E20CD7463001EBF94 /* Products */, - 011BFE4E2A27A7500027AD15 /* Frameworks */, - ); - sourceTree = ""; - }; - 49CF3B1E20CD7463001EBF94 /* Products */ = { - isa = PBXGroup; - children = ( - 49CF3B1D20CD7463001EBF94 /* ClashX Meta.app */, - F9A7C0692306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */, - ); - name = Products; - sourceTree = ""; - }; - 49CF3B1F20CD7463001EBF94 /* ClashX */ = { - isa = PBXGroup; - children = ( - 8A2BBEA527A03A920081EBEF /* AppleScript */, - 49722FDD211ED2A900650A41 /* Vendor */, - 4913C82021157CEB00F6B87C /* Macro */, - 4997732220D251A60009B136 /* Basic */, - 492C486E210EF621004554A0 /* Models */, - 491C24FF21BD558B00AB5D44 /* Extensions */, - 492C4866210EE69B004554A0 /* General */, - 4931969C21631F2E00A8E6E7 /* Views */, - 013C9F3E2AC160D200150FCC /* Actions */, - 4989F98520D0AA300001E564 /* ViewControllers */, - 49761DA521C9490400AE13EF /* Resources */, - 49CF3B3A20CD783A001EBF94 /* Support Files */, - 49CF3B2020CD7463001EBF94 /* AppDelegate.swift */, - 49CF3B2620CD7465001EBF94 /* Main.storyboard */, - 49CF3B2920CD7465001EBF94 /* Info.plist */, - 49CF3B2A20CD7465001EBF94 /* ClashX.entitlements */, - 49CF3B3520CD75DF001EBF94 /* ClashX-Bridging-Header.h */, - F9FAB31D262BE04800DE02A6 /* Images.xcassets */, - 0144905E2A8153250056028A /* ClashWindowController.swift */, - ); - path = ClashX; - sourceTree = ""; - }; - 49CF3B3A20CD783A001EBF94 /* Support Files */ = { - isa = PBXGroup; - children = ( - 4981C88D216BAE4A008CC14A /* Localizable.strings */, - ); - path = "Support Files"; - sourceTree = ""; - }; - 8A2BBEA527A03A920081EBEF /* AppleScript */ = { - isa = PBXGroup; - children = ( - 011946B52A32F64500502077 /* TunModeSettingCommand.swift */, - 8A2BBEA627A03ACB0081EBEF /* ProxySetting.sdef */, - 8ACD21BA27A04C7800BC4632 /* ProxySettingCommand.swift */, - 8ACD21BC27A04ED500BC4632 /* ProxyModeChangeCommand.swift */, - ); - path = AppleScript; - sourceTree = ""; - }; - F976275D23634F18000EDEFE /* LoginServiceKit */ = { - isa = PBXGroup; - children = ( - F976275B23634DF8000EDEFE /* LoginServiceKit.swift */, - ); - path = LoginServiceKit; - sourceTree = ""; - }; - F9A7C06A2306E874007163C7 /* ProxyConfigHelper */ = { - isa = PBXGroup; - children = ( - 491E61FC258A424500313AEF /* CommonUtils.h */, - 491E61FD258A424500313AEF /* CommonUtils.m */, - 498960722340F21C00AFB7EC /* com.metacubex.ClashX.ProxyConfigHelper.entitlements */, - 019A239528657A7A00AE5698 /* main.swift */, - 0162E74E2864B819007218A6 /* MetaTask.swift */, - 01BC9ABD2928E5C600F9B177 /* MetaDNS.swift */, - F935B2F12307C802009E4D33 /* Helper-Launchd.plist */, - F935B2EA2307B6BA009E4D33 /* Helper-Info.plist */, - F935B2F22307CD32009E4D33 /* ProxyConfigHelper.h */, - F935B2F32307CD32009E4D33 /* ProxyConfigHelper.m */, - F935B2F52307D00D009E4D33 /* ProxyConfigRemoteProcessProtocol.h */, - F935B2F823083EE6009E4D33 /* ProxySettingTool.h */, - F935B2F923083EE6009E4D33 /* ProxySettingTool.m */, - 0162E74D2864B818007218A6 /* com.metacubex.ClashX.ProxyConfigHelper-Bridging-Header.h */, - ); - path = ProxyConfigHelper; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 49CF3B1C20CD7463001EBF94 /* ClashX Meta */ = { - isa = PBXNativeTarget; - buildConfigurationList = 49CF3B2D20CD7465001EBF94 /* Build configuration list for PBXNativeTarget "ClashX Meta" */; - buildPhases = ( - 49CF3B1920CD7463001EBF94 /* Sources */, - 49CF3B1A20CD7463001EBF94 /* Frameworks */, - 49CF3B1B20CD7463001EBF94 /* Resources */, - 663E4677213FCDC4006F11BB /* Copy Files */, - ); - buildRules = ( - ); - dependencies = ( - F935B2EC2307B7CD009E4D33 /* PBXTargetDependency */, - ); - name = "ClashX Meta"; - packageProductDependencies = ( - 0192312029DD457000539EDD /* Alamofire */, - 0192312329DD464400539EDD /* RxCocoa */, - 0192312529DD464400539EDD /* RxSwift */, - 0192312829DD476A00539EDD /* SwiftyJSON */, - 0192312B29DD47FB00539EDD /* CocoaLumberjackSwift */, - 0192312E29DD483100539EDD /* Starscream */, - 0192313129DD488D00539EDD /* FlexibleDiff */, - 0192313429DD48BC00539EDD /* Gzip */, - 0192313729DD490400539EDD /* Yams */, - 0192313A29DD496E00539EDD /* PromiseKit */, - 012875E42A2E39CD004FB615 /* ClashX Dashboard */, - 01EACC6F2A2F9408001C584B /* KeyboardShortcuts */, - ); - productName = ClashX; - productReference = 49CF3B1D20CD7463001EBF94 /* ClashX Meta.app */; - productType = "com.apple.product-type.application"; - }; - F9A7C0682306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */ = { - isa = PBXNativeTarget; - buildConfigurationList = F9A7C06D2306E874007163C7 /* Build configuration list for PBXNativeTarget "com.metacubex.ClashX.ProxyConfigHelper" */; - buildPhases = ( - F9A7C0652306E874007163C7 /* Sources */, - F9A7C0662306E874007163C7 /* Frameworks */, - F9A7C0672306E874007163C7 /* Copy Files */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = com.metacubex.ClashX.ProxyConfigHelper; - productName = ProxyConfigHelper; - productReference = F9A7C0692306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */; - productType = "com.apple.product-type.tool"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 49CF3B1520CD7463001EBF94 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1420; - LastUpgradeCheck = 1420; - ORGANIZATIONNAME = west2online; - TargetAttributes = { - 49CF3B1C20CD7463001EBF94 = { - CreatedOnToolsVersion = 9.4; - LastSwiftMigration = 1020; - SystemCapabilities = { - com.apple.HardenedRuntime = { - enabled = 1; - }; - com.apple.Sandbox = { - enabled = 0; - }; - }; - }; - F9A7C0682306E874007163C7 = { - CreatedOnToolsVersion = 10.3; - LastSwiftMigration = 1340; - }; - }; - }; - buildConfigurationList = 49CF3B1820CD7463001EBF94 /* Build configuration list for PBXProject "ClashX SwiftUI" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - "zh-Hans", - ); - mainGroup = 49CF3B1420CD7463001EBF94; - packageReferences = ( - 0192311F29DD457000539EDD /* XCRemoteSwiftPackageReference "Alamofire" */, - 0192312229DD464400539EDD /* XCRemoteSwiftPackageReference "RxSwift" */, - 0192312729DD476A00539EDD /* XCRemoteSwiftPackageReference "SwiftyJSON" */, - 0192312A29DD47FB00539EDD /* XCRemoteSwiftPackageReference "CocoaLumberjack" */, - 0192312D29DD483100539EDD /* XCRemoteSwiftPackageReference "Starscream" */, - 0192313029DD488D00539EDD /* XCRemoteSwiftPackageReference "FlexibleDiff" */, - 0192313329DD48BC00539EDD /* XCRemoteSwiftPackageReference "GzipSwift" */, - 0192313629DD490400539EDD /* XCRemoteSwiftPackageReference "Yams" */, - 0192313929DD496E00539EDD /* XCRemoteSwiftPackageReference "PromiseKit" */, - 012875E32A2E39CD004FB615 /* XCRemoteSwiftPackageReference "ClashX-Dashboard" */, - 01EACC6E2A2F9408001C584B /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */, - ); - productRefGroup = 49CF3B1E20CD7463001EBF94 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 49CF3B1C20CD7463001EBF94 /* ClashX Meta */, - F9A7C0682306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 49CF3B1B20CD7463001EBF94 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 01B009AF2854533300B93618 /* geosite.dat.gz in Resources */, - 49761DA721C9497000AE13EF /* dashboard in Resources */, - 4981C88B216BAE4A008CC14A /* Localizable.strings in Resources */, - 8A2BBEA727A03ACB0081EBEF /* ProxySetting.sdef in Resources */, - F9FAB31E262BE04800DE02A6 /* Images.xcassets in Resources */, - 01E33AB529B5C5E400FD1006 /* menu_icon@2x.png in Resources */, - 495340B020DE5F7200B0D3FF /* StatusItemView.xib in Resources */, - 01B009AE2854533300B93618 /* geoip.dat.gz in Resources */, - 49CF3B2820CD7465001EBF94 /* Main.storyboard in Resources */, - 499A485A22ED781100F6C675 /* RemoteConfigAddView.xib in Resources */, - 4989F98E20D0AE990001E564 /* sampleConfig.yaml in Resources */, - 01C1462A28962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz in Resources */, - 01B2274B29B845F100FE35C9 /* country.mmdb.gz in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 49CF3B1920CD7463001EBF94 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 011946BA2A334C4900502077 /* ClashWebViewContoller.swift in Sources */, - 49ABB749236B0F9E00535CD7 /* UnsafePointer+bridge.swift in Sources */, - 01EACC762A2F94AB001C584B /* GlobalShortCutViewController.swift in Sources */, - 499A485522ED707300F6C675 /* RemoteConfigViewController.swift in Sources */, - 0144905C2A8150920056028A /* Combine+Ext.swift in Sources */, - 49D6A45229AEEC15006487EF /* StatusItemTool.swift in Sources */, - 49CF3B5C20CE8068001EBF94 /* ClashResourceManager.swift in Sources */, - 013C9F432AC160D200150FCC /* UpdateConfigAction.swift in Sources */, - 4952C3D02117027C004A4FA8 /* ConfigFileManager.swift in Sources */, - 49BC061C212931F4005A0FE7 /* AboutViewController.swift in Sources */, - 01EACC782A2F94C7001C584B /* NSView+Layout.swift in Sources */, - 4949D154213242F600EF85E6 /* Paths.swift in Sources */, - 499ADAFF2498FC6D00C488FE /* ExternalControlViewController.swift in Sources */, - F939724E23A4DB0600FE5A3F /* DateFormatter+.swift in Sources */, - F915A4622366ADEF004840BE /* ClashConnection.swift in Sources */, - F977FAAE23669D6400C17F1F /* ConnectionManager.swift in Sources */, - 495340B320DE68C300B0D3FF /* StatusItemView.swift in Sources */, - F935B2FC23085515009E4D33 /* SystemProxyManager.swift in Sources */, - 495A44D320D267D000888A0A /* LaunchAtLogin.swift in Sources */, - 01EACC722A2F9469001C584B /* SSIDSuspendTool.swift in Sources */, - 01B1CB082A2E1EC10073EA34 /* DashboardManagerSwiftUI.swift in Sources */, - 015EC9432A48891000145F7F /* NormalMenuItemView.swift in Sources */, - 4929F67F258CE04700A435F6 /* Settings.swift in Sources */, - 49D6A45629AEEC55006487EF /* StatusItemViewProtocol.swift in Sources */, - 493AEAE3221AE3420016FE98 /* AppVersionUtil.swift in Sources */, - 49CF3B2120CD7463001EBF94 /* AppDelegate.swift in Sources */, - 49722FEF211F338B00650A41 /* FileEvent.swift in Sources */, - 016BEAB029D80103001586C5 /* AlphaMetaDownloader.swift in Sources */, - 49D176A72355FE680093DD7B /* NetworkChangeNotifier.swift in Sources */, - 4913C82321157D0200F6B87C /* Notification.swift in Sources */, - 0144905D2A8150920056028A /* SpeedUtils.swift in Sources */, - 015F1E91288E42A50052B20A /* ClashMetaConfig.swift in Sources */, - 8ACD21BD27A04ED500BC4632 /* ProxyModeChangeCommand.swift in Sources */, - 498BC2552929CCAE00CA8084 /* GeneralSettingViewController.swift in Sources */, - 49228457270AADE20027A4B6 /* RemoteConfigUpdateIntervalSettingView.swift in Sources */, - F9203A26236342820020D57D /* AppDelegate+..swift in Sources */, - 499A485C22ED793C00F6C675 /* NSView+Nib.swift in Sources */, - 493A9F282453E60400D35296 /* ProxyDelayHistoryMenu.swift in Sources */, - 01E33AB229B5BF4200FD1006 /* NSColor+Extension.swift in Sources */, - 01EACC752A2F94AB001C584B /* DebugSettingViewController.swift in Sources */, - 492C4871210EF62E004554A0 /* ClashConfig.swift in Sources */, - 492C4869210EE6B9004554A0 /* ApiRequest.swift in Sources */, - 49CF3B6520CEE06C001EBF94 /* ConfigManager.swift in Sources */, - 0144905F2A8153260056028A /* ClashWindowController.swift in Sources */, - F9E754D0239CC21F00CEE7CC /* WebPortalManager.swift in Sources */, - 018F88F9286DD0CB004DD0F7 /* DualTitleMenuItem.swift in Sources */, - 495BFB8821919B9800C8779D /* RemoteConfigManager.swift in Sources */, - 4982F51F2344A216008804B0 /* Cgo+Convert.swift in Sources */, - 8ACD21BB27A04C7800BC4632 /* ProxySettingCommand.swift in Sources */, - 49722FF1211F338B00650A41 /* Witness.swift in Sources */, - 49722FF0211F338B00650A41 /* EventStream.swift in Sources */, - 499A486522EEA3FD00F6C675 /* Array+Safe.swift in Sources */, - F92D0B24236BC12000575E15 /* SavedProxyModel.swift in Sources */, - F92D0B2A236C759100575E15 /* NSTextField+Vibrancy.swift in Sources */, - F910AA24240134AF00116E95 /* ProxyGroupMenu.swift in Sources */, - 4952C3BF2115C7CA004A4FA8 /* MenuItemFactory.swift in Sources */, - 015F1E92288E60D30052B20A /* MetaTask.swift in Sources */, - 013C9F422AC160D200150FCC /* TerminalCleanUpAction.swift in Sources */, - F977FAAC2366790500C17F1F /* AutoUpgardeManager.swift in Sources */, - 499A485822ED715200F6C675 /* RemoteConfigModel.swift in Sources */, - 49D176AB23575BB20093DD7B /* ProxyGroupMenuItemView.swift in Sources */, - 49B4575D244F4A2A00463C39 /* PrivilegedHelperManager.swift in Sources */, - 49B4575F244FD4D100463C39 /* PrivilegedHelperManager+Legacy.swift in Sources */, - 013C9F442AC160D200150FCC /* UpdateExternalResourceAction.swift in Sources */, - 4966E9E32118153A00A391FB /* NSUserNotificationCenter+Extension.swift in Sources */, - F9E754D2239CC28D00CEE7CC /* NSAlert+Extension.swift in Sources */, - 49D176A9235614340093DD7B /* ProxyGroupSpeedTestMenuItem.swift in Sources */, - F976275C23634DF8000EDEFE /* LoginServiceKit.swift in Sources */, - 011946B62A32F64600502077 /* TunModeSettingCommand.swift in Sources */, - 01C5B88D2A4FD1DB00C4E36A /* Logger.swift in Sources */, - F92D0B2E236D35C000575E15 /* ProxyItemView.swift in Sources */, - 49BB31E7246853EA008A4CB0 /* ICloudManager.swift in Sources */, - 49B1086A216A356D0064FFCE /* String+Extension.swift in Sources */, - F92D0B2C236C7C3600575E15 /* MenuItemBaseView.swift in Sources */, - 499ADAFD2498CC5900C488FE /* RemoteControlManager.swift in Sources */, - 49769FB427E9B3E400E3D664 /* LoginKitWrapper.m in Sources */, - 493AEAE5221AE7230016FE98 /* ProxyMenuItem.swift in Sources */, - 499A485E22ED9B7C00F6C675 /* NSTableView+Reload.swift in Sources */, - F939724C23A4B33500FE5A3F /* ClashProvider.swift in Sources */, - 498BC2532929CC2A00CA8084 /* SettingTabViewController.swift in Sources */, - 49862FA0218418C600A1D5EC /* ClashRule.swift in Sources */, - 01943259287D19BC008CC51A /* ClashRuleProvider.swift in Sources */, - 49C9EF64223E78F5005D8B6A /* ClashProxy.swift in Sources */, - 4929F684258CE07500A435F6 /* UserDefaultWrapper.swift in Sources */, - F9E8F34623A12B89002DE5E8 /* String+Encode.swift in Sources */, - 49B445162457CDF000B27E3E /* ClashStatusTool.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9A7C0652306E874007163C7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F935B2F42307CD32009E4D33 /* ProxyConfigHelper.m in Sources */, - 0162E74F2864B819007218A6 /* MetaTask.swift in Sources */, - 019A239628657A7A00AE5698 /* main.swift in Sources */, - 491E6203258A424D00313AEF /* CommonUtils.m in Sources */, - 01BC9ABE2928EB5A00F9B177 /* MetaDNS.swift in Sources */, - F935B2FA23083EE6009E4D33 /* ProxySettingTool.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - F935B2EC2307B7CD009E4D33 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = F9A7C0682306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */; - targetProxy = F935B2EB2307B7CD009E4D33 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 4981C88D216BAE4A008CC14A /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - 4981C88C216BAE4A008CC14A /* en */, - 4981C88E216BAE4D008CC14A /* zh-Hans */, - ); - name = Localizable.strings; - sourceTree = ""; - }; - 49CF3B2620CD7465001EBF94 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 49CF3B2720CD7465001EBF94 /* Base */, - 4981C887216BAB8A008CC14A /* zh-Hans */, - ); - name = Main.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 49CF3B2B20CD7465001EBF94 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "Mac Developer"; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 49CF3B2C20CD7465001EBF94 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "Mac Developer"; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 49CF3B2E20CD7465001EBF94 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = ClashX/ClashX.entitlements; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Manual; - COMBINE_HIDPI_IMAGES = YES; - COMPRESS_PNG_FILES = YES; - CURRENT_PROJECT_VERSION = 0; - DEAD_CODE_STRIPPING = YES; - DEVELOPMENT_TEAM = ""; - ENABLE_HARDENED_RUNTIME = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/ClashX/Support\\ Files", - "$(PROJECT_DIR)/ClashX/Support\\ Files", - "$(PROJECT_DIR)/ClashX/Support\\ Files", - "$(PROJECT_DIR)/ClashX/Support\\ Files", - ); - INFOPLIST_FILE = ClashX/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/ClashX", - ); - MACOSX_DEPLOYMENT_TARGET = 12.0; - MARKETING_VERSION = v1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.meta; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - STRIP_INSTALLED_PRODUCT = NO; - STRIP_PNG_TEXT = YES; - SWIFT_OBJC_BRIDGING_HEADER = "ClashX/ClashX-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 49CF3B2F20CD7465001EBF94 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = ClashX/ClashX.entitlements; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Manual; - COMBINE_HIDPI_IMAGES = YES; - COMPRESS_PNG_FILES = YES; - COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 0; - DEAD_CODE_STRIPPING = YES; - DEPLOYMENT_POSTPROCESSING = YES; - DEVELOPMENT_TEAM = ""; - ENABLE_HARDENED_RUNTIME = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/ClashX/Support\\ Files", - "$(PROJECT_DIR)/ClashX/Support\\ Files", - "$(PROJECT_DIR)/ClashX/Support\\ Files", - "$(PROJECT_DIR)/ClashX/Support\\ Files", - ); - INFOPLIST_FILE = ClashX/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/ClashX", - ); - MACOSX_DEPLOYMENT_TARGET = 12.0; - MARKETING_VERSION = v1.0; - OTHER_CODE_SIGN_FLAGS = "--timestamp"; - PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.meta; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - STRIP_INSTALLED_PRODUCT = YES; - STRIP_PNG_TEXT = YES; - SWIFT_OBJC_BRIDGING_HEADER = "ClashX/ClashX-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - F9A7C06E2306E874007163C7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = ProxyConfigHelper/com.metacubex.ClashX.ProxyConfigHelper.entitlements; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 3; - DEAD_CODE_STRIPPING = YES; - DEVELOPMENT_TEAM = ""; - ENABLE_HARDENED_RUNTIME = YES; - INFOPLIST_FILE = "$(SRCROOT)/ProxyConfigHelper/Helper-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; - MARKETING_VERSION = 1.2; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = ( - "-sectcreate", - __TEXT, - __info_plist, - "\"$(SRCROOT)/ProxyConfigHelper/Helper-Info.plist\"", - "-sectcreate", - __TEXT, - __launchd_plist, - "\"$(SRCROOT)/ProxyConfigHelper/Helper-Launchd.plist\"", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.ProxyConfigHelper; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "ProxyConfigHelper/com.metacubex.ClashX.ProxyConfigHelper-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - F9A7C06F2306E874007163C7 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = ProxyConfigHelper/com.metacubex.ClashX.ProxyConfigHelper.entitlements; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 3; - DEAD_CODE_STRIPPING = YES; - DEPLOYMENT_POSTPROCESSING = YES; - DEVELOPMENT_TEAM = ""; - ENABLE_HARDENED_RUNTIME = YES; - INFOPLIST_FILE = "$(SRCROOT)/ProxyConfigHelper/Helper-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; - MARKETING_VERSION = 1.2; - MTL_FAST_MATH = YES; - OTHER_LDFLAGS = ( - "-sectcreate", - __TEXT, - __info_plist, - "\"$(SRCROOT)/ProxyConfigHelper/Helper-Info.plist\"", - "-sectcreate", - __TEXT, - __launchd_plist, - "\"$(SRCROOT)/ProxyConfigHelper/Helper-Launchd.plist\"", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.ProxyConfigHelper; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "ProxyConfigHelper/com.metacubex.ClashX.ProxyConfigHelper-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 49CF3B1820CD7463001EBF94 /* Build configuration list for PBXProject "ClashX SwiftUI" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 49CF3B2B20CD7465001EBF94 /* Debug */, - 49CF3B2C20CD7465001EBF94 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 49CF3B2D20CD7465001EBF94 /* Build configuration list for PBXNativeTarget "ClashX Meta" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 49CF3B2E20CD7465001EBF94 /* Debug */, - 49CF3B2F20CD7465001EBF94 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F9A7C06D2306E874007163C7 /* Build configuration list for PBXNativeTarget "com.metacubex.ClashX.ProxyConfigHelper" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F9A7C06E2306E874007163C7 /* Debug */, - F9A7C06F2306E874007163C7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - 012875E32A2E39CD004FB615 /* XCRemoteSwiftPackageReference "ClashX-Dashboard" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/mrFq1/ClashX-Dashboard"; - requirement = { - branch = dev; - kind = branch; - }; - }; - 0192311F29DD457000539EDD /* XCRemoteSwiftPackageReference "Alamofire" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/Alamofire/Alamofire"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 5.0.0; - }; - }; - 0192312229DD464400539EDD /* XCRemoteSwiftPackageReference "RxSwift" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/ReactiveX/RxSwift"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 6.0.0; - }; - }; - 0192312729DD476A00539EDD /* XCRemoteSwiftPackageReference "SwiftyJSON" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/SwiftyJSON/SwiftyJSON"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 5.0.0; - }; - }; - 0192312A29DD47FB00539EDD /* XCRemoteSwiftPackageReference "CocoaLumberjack" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/CocoaLumberjack/CocoaLumberjack"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 3.0.0; - }; - }; - 0192312D29DD483100539EDD /* XCRemoteSwiftPackageReference "Starscream" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/daltoniam/Starscream"; - requirement = { - kind = exactVersion; - version = 3.1.1; - }; - }; - 0192313029DD488D00539EDD /* XCRemoteSwiftPackageReference "FlexibleDiff" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/RACCommunity/FlexibleDiff"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 0.0.9; - }; - }; - 0192313329DD48BC00539EDD /* XCRemoteSwiftPackageReference "GzipSwift" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/1024jp/GzipSwift"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 6.0.0; - }; - }; - 0192313629DD490400539EDD /* XCRemoteSwiftPackageReference "Yams" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/jpsim/Yams"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 5.0.0; - }; - }; - 0192313929DD496E00539EDD /* XCRemoteSwiftPackageReference "PromiseKit" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/mxcl/PromiseKit"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 8.0.0; - }; - }; - 01EACC6E2A2F9408001C584B /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/sindresorhus/KeyboardShortcuts"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 1.0.0; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - 012875E42A2E39CD004FB615 /* ClashX Dashboard */ = { - isa = XCSwiftPackageProductDependency; - package = 012875E32A2E39CD004FB615 /* XCRemoteSwiftPackageReference "ClashX-Dashboard" */; - productName = "ClashX Dashboard"; - }; - 0192312029DD457000539EDD /* Alamofire */ = { - isa = XCSwiftPackageProductDependency; - package = 0192311F29DD457000539EDD /* XCRemoteSwiftPackageReference "Alamofire" */; - productName = Alamofire; - }; - 0192312329DD464400539EDD /* RxCocoa */ = { - isa = XCSwiftPackageProductDependency; - package = 0192312229DD464400539EDD /* XCRemoteSwiftPackageReference "RxSwift" */; - productName = RxCocoa; - }; - 0192312529DD464400539EDD /* RxSwift */ = { - isa = XCSwiftPackageProductDependency; - package = 0192312229DD464400539EDD /* XCRemoteSwiftPackageReference "RxSwift" */; - productName = RxSwift; - }; - 0192312829DD476A00539EDD /* SwiftyJSON */ = { - isa = XCSwiftPackageProductDependency; - package = 0192312729DD476A00539EDD /* XCRemoteSwiftPackageReference "SwiftyJSON" */; - productName = SwiftyJSON; - }; - 0192312B29DD47FB00539EDD /* CocoaLumberjackSwift */ = { - isa = XCSwiftPackageProductDependency; - package = 0192312A29DD47FB00539EDD /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; - productName = CocoaLumberjackSwift; - }; - 0192312E29DD483100539EDD /* Starscream */ = { - isa = XCSwiftPackageProductDependency; - package = 0192312D29DD483100539EDD /* XCRemoteSwiftPackageReference "Starscream" */; - productName = Starscream; - }; - 0192313129DD488D00539EDD /* FlexibleDiff */ = { - isa = XCSwiftPackageProductDependency; - package = 0192313029DD488D00539EDD /* XCRemoteSwiftPackageReference "FlexibleDiff" */; - productName = FlexibleDiff; - }; - 0192313429DD48BC00539EDD /* Gzip */ = { - isa = XCSwiftPackageProductDependency; - package = 0192313329DD48BC00539EDD /* XCRemoteSwiftPackageReference "GzipSwift" */; - productName = Gzip; - }; - 0192313729DD490400539EDD /* Yams */ = { - isa = XCSwiftPackageProductDependency; - package = 0192313629DD490400539EDD /* XCRemoteSwiftPackageReference "Yams" */; - productName = Yams; - }; - 0192313A29DD496E00539EDD /* PromiseKit */ = { - isa = XCSwiftPackageProductDependency; - package = 0192313929DD496E00539EDD /* XCRemoteSwiftPackageReference "PromiseKit" */; - productName = PromiseKit; - }; - 01EACC6F2A2F9408001C584B /* KeyboardShortcuts */ = { - isa = XCSwiftPackageProductDependency; - package = 01EACC6E2A2F9408001C584B /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */; - productName = KeyboardShortcuts; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = 49CF3B1520CD7463001EBF94 /* Project object */; -} diff --git a/ClashX SwiftUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ClashX SwiftUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a62..000000000 --- a/ClashX SwiftUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ClashX SwiftUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ClashX SwiftUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/ClashX SwiftUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/ClashX SwiftUI.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ClashX SwiftUI.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index c3e2dab5d..000000000 --- a/ClashX SwiftUI.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,158 +0,0 @@ -{ - "pins" : [ - { - "identity" : "alamofire", - "kind" : "remoteSourceControl", - "location" : "https://github.com/Alamofire/Alamofire", - "state" : { - "revision" : "b2fa556e4e48cbf06cf8c63def138c98f4b811fa", - "version" : "5.8.0" - } - }, - { - "identity" : "clashx-dashboard", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mrFq1/ClashX-Dashboard", - "state" : { - "branch" : "dev", - "revision" : "272999024e836c5b006b0f3869fa4a1f5d27286b" - } - }, - { - "identity" : "cocoalumberjack", - "kind" : "remoteSourceControl", - "location" : "https://github.com/CocoaLumberjack/CocoaLumberjack", - "state" : { - "revision" : "67ec5818a757aba4d7c534e21a905d878d128dbf", - "version" : "3.8.1" - } - }, - { - "identity" : "dsfsparkline", - "kind" : "remoteSourceControl", - "location" : "https://github.com/dagronf/DSFSparkline.git", - "state" : { - "revision" : "cfcf80b9e214500cbc12b795b7c9943151b8bd4f", - "version" : "4.6.4" - } - }, - { - "identity" : "flexiblediff", - "kind" : "remoteSourceControl", - "location" : "https://github.com/RACCommunity/FlexibleDiff", - "state" : { - "revision" : "a5132719a812111ef7eaea647a659a351b15abf4", - "version" : "0.0.9" - } - }, - { - "identity" : "gzipswift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/1024jp/GzipSwift", - "state" : { - "revision" : "731037f6cc2be2ec01562f6597c1d0aa3fe6fd05", - "version" : "6.0.1" - } - }, - { - "identity" : "keyboardshortcuts", - "kind" : "remoteSourceControl", - "location" : "https://github.com/sindresorhus/KeyboardShortcuts", - "state" : { - "revision" : "ac302e21da5883f4bd0490cbd0cb710b08740500", - "version" : "1.15.0" - } - }, - { - "identity" : "nimble", - "kind" : "remoteSourceControl", - "location" : "https://github.com/Quick/Nimble.git", - "state" : { - "revision" : "7a46a5fc86cb917f69e3daf79fcb045283d8f008", - "version" : "8.1.2" - } - }, - { - "identity" : "promisekit", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mxcl/PromiseKit", - "state" : { - "revision" : "cb70b070cde06837cd10a1febdf6105c1a3bb348", - "version" : "8.1.1" - } - }, - { - "identity" : "quick", - "kind" : "remoteSourceControl", - "location" : "https://github.com/Quick/Quick.git", - "state" : { - "revision" : "09b3becb37cb2163919a3842a4c5fa6ec7130792", - "version" : "2.2.1" - } - }, - { - "identity" : "rxswift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/ReactiveX/RxSwift", - "state" : { - "revision" : "9dcaa4b333db437b0fbfaf453fad29069044a8b4", - "version" : "6.6.0" - } - }, - { - "identity" : "starscream", - "kind" : "remoteSourceControl", - "location" : "https://github.com/daltoniam/Starscream", - "state" : { - "revision" : "e6b65c6d9077ea48b4a7bdda8994a1d3c6969c8d", - "version" : "3.1.1" - } - }, - { - "identity" : "swift-log", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-log.git", - "state" : { - "revision" : "532d8b529501fb73a2455b179e0bbb6d49b652ed", - "version" : "1.5.3" - } - }, - { - "identity" : "swift-nio-zlib-support", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-nio-zlib-support.git", - "state" : { - "revision" : "37760e9a52030bb9011972c5213c3350fa9d41fd", - "version" : "1.0.0" - } - }, - { - "identity" : "swiftui-introspect", - "kind" : "remoteSourceControl", - "location" : "https://github.com/siteline/swiftui-introspect", - "state" : { - "revision" : "121c146fe591b1320238d054ae35c81ffa45f45a", - "version" : "0.12.0" - } - }, - { - "identity" : "swiftyjson", - "kind" : "remoteSourceControl", - "location" : "https://github.com/SwiftyJSON/SwiftyJSON", - "state" : { - "revision" : "b3dcd7dbd0d488e1a7077cb33b00f2083e382f07", - "version" : "5.0.1" - } - }, - { - "identity" : "yams", - "kind" : "remoteSourceControl", - "location" : "https://github.com/jpsim/Yams", - "state" : { - "revision" : "0d9ee7ea8c4ebd4a489ad7a73d5c6cad55d6fed3", - "version" : "5.0.6" - } - } - ], - "version" : 2 -} diff --git a/ClashX SwiftUI.xcodeproj/xcshareddata/xcschemes/com.metacubex.ClashX.ProxyConfigHelper.xcscheme b/ClashX SwiftUI.xcodeproj/xcshareddata/xcschemes/com.metacubex.ClashX.ProxyConfigHelper.xcscheme deleted file mode 100644 index 58aa08473..000000000 --- a/ClashX SwiftUI.xcodeproj/xcshareddata/xcschemes/com.metacubex.ClashX.ProxyConfigHelper.xcscheme +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ClashX.xcodeproj/project.pbxproj b/ClashX.xcodeproj/project.pbxproj index 4da741db4..8307765d1 100644 --- a/ClashX.xcodeproj/project.pbxproj +++ b/ClashX.xcodeproj/project.pbxproj @@ -33,6 +33,120 @@ 01C1462A28962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */; }; 01E33AB229B5BF4200FD1006 /* NSColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */; }; 01E33AB529B5C5E400FD1006 /* menu_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */; }; + 01F335CD2AD10D0B0048AF77 /* UnsafePointer+bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49ABB748236B0F9E00535CD7 /* UnsafePointer+bridge.swift */; }; + 01F335CE2AD10D0B0048AF77 /* RemoteConfigViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499A485322ED707300F6C675 /* RemoteConfigViewController.swift */; }; + 01F335CF2AD10D0B0048AF77 /* StatusItemTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D6A45129AEEC15006487EF /* StatusItemTool.swift */; }; + 01F335D02AD10D0B0048AF77 /* ClashResourceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CF3B5B20CE8068001EBF94 /* ClashResourceManager.swift */; }; + 01F335D12AD10D0B0048AF77 /* ConfigFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4952C3CF2117027C004A4FA8 /* ConfigFileManager.swift */; }; + 01F335D22AD10D0B0048AF77 /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49BC061B212931F4005A0FE7 /* AboutViewController.swift */; }; + 01F335D32AD10D0B0048AF77 /* Paths.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4949D153213242F600EF85E6 /* Paths.swift */; }; + 01F335D42AD10D0B0048AF77 /* TunModeSettingCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2753484F2A3082FD0077B458 /* TunModeSettingCommand.swift */; }; + 01F335D52AD10D0B0048AF77 /* DashboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01B1CB092A2E20C10073EA34 /* DashboardManager.swift */; }; + 01F335D62AD10D0B0048AF77 /* ExternalControlViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499ADAFE2498FC6D00C488FE /* ExternalControlViewController.swift */; }; + 01F335D72AD10D0B0048AF77 /* DateFormatter+.swift in Sources */ = {isa = PBXBuildFile; fileRef = F939724D23A4DB0600FE5A3F /* DateFormatter+.swift */; }; + 01F335D82AD10D0B0048AF77 /* ClashConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = F915A4612366ADEF004840BE /* ClashConnection.swift */; }; + 01F335D92AD10D0B0048AF77 /* ConnectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F977FAAD23669D6400C17F1F /* ConnectionManager.swift */; }; + 01F335DA2AD10D0B0048AF77 /* StatusItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495340B220DE68C300B0D3FF /* StatusItemView.swift */; }; + 01F335DB2AD10D0B0048AF77 /* SystemProxyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F935B2FB23085515009E4D33 /* SystemProxyManager.swift */; }; + 01F335DC2AD10D0B0048AF77 /* LaunchAtLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495A44D220D267D000888A0A /* LaunchAtLogin.swift */; }; + 01F335DD2AD10D0B0048AF77 /* Combine+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4991D2312A565E6A00978143 /* Combine+Ext.swift */; }; + 01F335DE2AD10D0B0048AF77 /* DebugSettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49281C7F2A1F01FA00F60935 /* DebugSettingViewController.swift */; }; + 01F335DF2AD10D0B0048AF77 /* ClashWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CCDA292A54F9AC00FF1E13 /* ClashWindowController.swift */; }; + 01F335E02AD10D0B0048AF77 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4929F67E258CE04700A435F6 /* Settings.swift */; }; + 01F335E12AD10D0B0048AF77 /* StatusItemViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D6A45529AEEC55006487EF /* StatusItemViewProtocol.swift */; }; + 01F335E22AD10D0B0048AF77 /* AppVersionUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 493AEAE2221AE3420016FE98 /* AppVersionUtil.swift */; }; + 01F335E32AD10D0B0048AF77 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CF3B2020CD7463001EBF94 /* AppDelegate.swift */; }; + 01F335E42AD10D0B0048AF77 /* SpeedUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4991D22F2A564DDC00978143 /* SpeedUtils.swift */; }; + 01F335E52AD10D0B0048AF77 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 496BDEDF21196F1E00C5207F /* Logger.swift */; }; + 01F335E62AD10D0B0048AF77 /* NSView+Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4905A2C92A20841B00AEDA2E /* NSView+Layout.swift */; }; + 01F335E72AD10D0B0048AF77 /* FileEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49722FEA211F338B00650A41 /* FileEvent.swift */; }; + 01F335E82AD10D0B0048AF77 /* AlphaMetaDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016BEAAF29D80102001586C5 /* AlphaMetaDownloader.swift */; }; + 01F335E92AD10D0B0048AF77 /* NetworkChangeNotifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D176A62355FE680093DD7B /* NetworkChangeNotifier.swift */; }; + 01F335EA2AD10D0B0048AF77 /* GlobalShortCutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4905A2C42A2058B000AEDA2E /* GlobalShortCutViewController.swift */; }; + 01F335EB2AD10D0B0048AF77 /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4913C82221157D0200F6B87C /* Notification.swift */; }; + 01F335EC2AD10D0B0048AF77 /* ClashMetaConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 015F1E90288E42A50052B20A /* ClashMetaConfig.swift */; }; + 01F335ED2AD10D0B0048AF77 /* ProxyModeChangeCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ACD21BC27A04ED500BC4632 /* ProxyModeChangeCommand.swift */; }; + 01F335EE2AD10D0B0048AF77 /* GeneralSettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 498BC2542929CCAE00CA8084 /* GeneralSettingViewController.swift */; }; + 01F335EF2AD10D0B0048AF77 /* RemoteConfigUpdateIntervalSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49228456270AADE20027A4B6 /* RemoteConfigUpdateIntervalSettingView.swift */; }; + 01F335F02AD10D0B0048AF77 /* AppDelegate+..swift in Sources */ = {isa = PBXBuildFile; fileRef = F9203A25236342820020D57D /* AppDelegate+..swift */; }; + 01F335F12AD10D0B0048AF77 /* NSView+Nib.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499A485B22ED793C00F6C675 /* NSView+Nib.swift */; }; + 01F335F22AD10D0B0048AF77 /* ProxyDelayHistoryMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 493A9F272453E60400D35296 /* ProxyDelayHistoryMenu.swift */; }; + 01F335F32AD10D0B0048AF77 /* NSColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */; }; + 01F335F42AD10D0B0048AF77 /* ClashConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 492C4870210EF62E004554A0 /* ClashConfig.swift */; }; + 01F335F52AD10D0B0048AF77 /* ApiRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 492C4868210EE6B9004554A0 /* ApiRequest.swift */; }; + 01F335F62AD10D0B0048AF77 /* ConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CF3B6420CEE06C001EBF94 /* ConfigManager.swift */; }; + 01F335F72AD10D0B0048AF77 /* TerminalCleanUpAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49870ADA2AA75DC7002B106B /* TerminalCleanUpAction.swift */; }; + 01F335F82AD10D0B0048AF77 /* WebPortalManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9E754CF239CC21F00CEE7CC /* WebPortalManager.swift */; }; + 01F335F92AD10D0B0048AF77 /* DualTitleMenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 018F88F8286DD0CB004DD0F7 /* DualTitleMenuItem.swift */; }; + 01F335FA2AD10D0B0048AF77 /* RemoteConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495BFB8721919B9800C8779D /* RemoteConfigManager.swift */; }; + 01F335FB2AD10D0B0048AF77 /* Cgo+Convert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4982F51E2344A216008804B0 /* Cgo+Convert.swift */; }; + 01F335FC2AD10D0B0048AF77 /* ProxySettingCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ACD21BA27A04C7800BC4632 /* ProxySettingCommand.swift */; }; + 01F335FD2AD10D0B0048AF77 /* Witness.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49722FEC211F338B00650A41 /* Witness.swift */; }; + 01F335FE2AD10D0B0048AF77 /* EventStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49722FEB211F338B00650A41 /* EventStream.swift */; }; + 01F335FF2AD10D0B0048AF77 /* Array+Safe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499A486422EEA3FC00F6C675 /* Array+Safe.swift */; }; + 01F336002AD10D0B0048AF77 /* SavedProxyModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F92D0B23236BC12000575E15 /* SavedProxyModel.swift */; }; + 01F336012AD10D0B0048AF77 /* NSTextField+Vibrancy.swift in Sources */ = {isa = PBXBuildFile; fileRef = F92D0B29236C759100575E15 /* NSTextField+Vibrancy.swift */; }; + 01F336022AD10D0B0048AF77 /* SSIDSuspendTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D223382A1DA5F10002FFCB /* SSIDSuspendTool.swift */; }; + 01F336032AD10D0B0048AF77 /* ProxyGroupMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = F910AA23240134AF00116E95 /* ProxyGroupMenu.swift */; }; + 01F336042AD10D0B0048AF77 /* MenuItemFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4952C3BE2115C7CA004A4FA8 /* MenuItemFactory.swift */; }; + 01F336052AD10D0B0048AF77 /* MetaTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0162E74E2864B819007218A6 /* MetaTask.swift */; }; + 01F336062AD10D0B0048AF77 /* AutoUpgardeManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F977FAAB2366790500C17F1F /* AutoUpgardeManager.swift */; }; + 01F336072AD10D0B0048AF77 /* RemoteConfigModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499A485722ED715200F6C675 /* RemoteConfigModel.swift */; }; + 01F336082AD10D0B0048AF77 /* ProxyGroupMenuItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D176AA23575BB20093DD7B /* ProxyGroupMenuItemView.swift */; }; + 01F336092AD10D0B0048AF77 /* PrivilegedHelperManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49B4575C244F4A2A00463C39 /* PrivilegedHelperManager.swift */; }; + 01F3360A2AD10D0B0048AF77 /* PrivilegedHelperManager+Legacy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49B4575E244FD4D100463C39 /* PrivilegedHelperManager+Legacy.swift */; }; + 01F3360B2AD10D0B0048AF77 /* NSUserNotificationCenter+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */; }; + 01F3360C2AD10D0B0048AF77 /* NSAlert+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9E754D1239CC28D00CEE7CC /* NSAlert+Extension.swift */; }; + 01F3360D2AD10D0B0048AF77 /* ClashWebViewContoller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499976C721359F0400E7BF83 /* ClashWebViewContoller.swift */; }; + 01F3360E2AD10D0B0048AF77 /* ProxyGroupSpeedTestMenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49D176A8235614340093DD7B /* ProxyGroupSpeedTestMenuItem.swift */; }; + 01F3360F2AD10D0B0048AF77 /* LoginServiceKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = F976275B23634DF8000EDEFE /* LoginServiceKit.swift */; }; + 01F336102AD10D0B0048AF77 /* NormalMenuItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4994B5532A47C4FF00E595B9 /* NormalMenuItemView.swift */; }; + 01F336112AD10D0B0048AF77 /* ProxyItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F92D0B2D236D35C000575E15 /* ProxyItemView.swift */; }; + 01F336122AD10D0B0048AF77 /* ICloudManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49BB31E6246853EA008A4CB0 /* ICloudManager.swift */; }; + 01F336132AD10D0B0048AF77 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49B10869216A356D0064FFCE /* String+Extension.swift */; }; + 01F336142AD10D0B0048AF77 /* MenuItemBaseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F92D0B2B236C7C3600575E15 /* MenuItemBaseView.swift */; }; + 01F336152AD10D0B0048AF77 /* RemoteControlManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499ADAFC2498CC5900C488FE /* RemoteControlManager.swift */; }; + 01F336162AD10D0B0048AF77 /* LoginKitWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 49D8276727E9B01700159D93 /* LoginKitWrapper.m */; }; + 01F336172AD10D0B0048AF77 /* ProxyMenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 493AEAE4221AE7230016FE98 /* ProxyMenuItem.swift */; }; + 01F336182AD10D0B0048AF77 /* UpdateExternalResourceAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 496322212AA5D89E00854231 /* UpdateExternalResourceAction.swift */; }; + 01F336192AD10D0B0048AF77 /* UpdateConfigAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49870ADC2AA76602002B106B /* UpdateConfigAction.swift */; }; + 01F3361A2AD10D0B0048AF77 /* NSTableView+Reload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499A485D22ED9B7C00F6C675 /* NSTableView+Reload.swift */; }; + 01F3361B2AD10D0B0048AF77 /* ClashProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F939724B23A4B33500FE5A3F /* ClashProvider.swift */; }; + 01F3361C2AD10D0B0048AF77 /* SettingTabViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 498BC2522929CC2A00CA8084 /* SettingTabViewController.swift */; }; + 01F3361D2AD10D0B0048AF77 /* ClashRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49862F9F218418C600A1D5EC /* ClashRule.swift */; }; + 01F3361E2AD10D0B0048AF77 /* ClashRuleProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01943258287D19BC008CC51A /* ClashRuleProvider.swift */; }; + 01F3361F2AD10D0B0048AF77 /* ClashProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49C9EF63223E78F5005D8B6A /* ClashProxy.swift */; }; + 01F336202AD10D0B0048AF77 /* UserDefaultWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4929F683258CE07500A435F6 /* UserDefaultWrapper.swift */; }; + 01F336212AD10D0B0048AF77 /* String+Encode.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9E8F34523A12B89002DE5E8 /* String+Encode.swift */; }; + 01F336222AD10D0B0048AF77 /* ClashStatusTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49B445152457CDF000B27E3E /* ClashStatusTool.swift */; }; + 01F336242AD10D0B0048AF77 /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335BC2AD10D0B0048AF77 /* RxSwift */; }; + 01F336252AD10D0B0048AF77 /* SwiftyJSON in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335BD2AD10D0B0048AF77 /* SwiftyJSON */; }; + 01F336262AD10D0B0048AF77 /* Gzip in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335C62AD10D0B0048AF77 /* Gzip */; }; + 01F336272AD10D0B0048AF77 /* CocoaLumberjackSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335C12AD10D0B0048AF77 /* CocoaLumberjackSwift */; }; + 01F336282AD10D0B0048AF77 /* Starscream in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335C22AD10D0B0048AF77 /* Starscream */; }; + 01F336292AD10D0B0048AF77 /* PromiseKit in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335CA2AD10D0B0048AF77 /* PromiseKit */; }; + 01F3362A2AD10D0B0048AF77 /* KeyboardShortcuts in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335B62AD10D0B0048AF77 /* KeyboardShortcuts */; }; + 01F3362B2AD10D0B0048AF77 /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335B82AD10D0B0048AF77 /* Alamofire */; }; + 01F3362C2AD10D0B0048AF77 /* CocoaLumberjack in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335BF2AD10D0B0048AF77 /* CocoaLumberjack */; }; + 01F3362D2AD10D0B0048AF77 /* Yams in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335C82AD10D0B0048AF77 /* Yams */; }; + 01F3362E2AD10D0B0048AF77 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335BA2AD10D0B0048AF77 /* RxCocoa */; }; + 01F3362F2AD10D0B0048AF77 /* FlexibleDiff in Frameworks */ = {isa = PBXBuildFile; productRef = 01F335C42AD10D0B0048AF77 /* FlexibleDiff */; }; + 01F336302AD10D0B0048AF77 /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4908087A29F8F3FF007A4944 /* libresolv.tbd */; }; + 01F336322AD10D0B0048AF77 /* geosite.dat.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01B009AD2854533300B93618 /* geosite.dat.gz */; }; + 01F336332AD10D0B0048AF77 /* dashboard in Resources */ = {isa = PBXBuildFile; fileRef = 49761DA621C9497000AE13EF /* dashboard */; }; + 01F336342AD10D0B0048AF77 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4981C88D216BAE4A008CC14A /* Localizable.strings */; }; + 01F336352AD10D0B0048AF77 /* ProxySetting.sdef in Resources */ = {isa = PBXBuildFile; fileRef = 8A2BBEA627A03ACB0081EBEF /* ProxySetting.sdef */; }; + 01F336362AD10D0B0048AF77 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F9FAB31D262BE04800DE02A6 /* Images.xcassets */; }; + 01F336372AD10D0B0048AF77 /* menu_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */; }; + 01F336382AD10D0B0048AF77 /* StatusItemView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 495340AF20DE5F7200B0D3FF /* StatusItemView.xib */; }; + 01F336392AD10D0B0048AF77 /* geoip.dat.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01B009AC2854533200B93618 /* geoip.dat.gz */; }; + 01F3363A2AD10D0B0048AF77 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B2620CD7465001EBF94 /* Main.storyboard */; }; + 01F3363B2AD10D0B0048AF77 /* RemoteConfigAddView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 499A485922ED781100F6C675 /* RemoteConfigAddView.xib */; }; + 01F3363C2AD10D0B0048AF77 /* sampleConfig.yaml in Resources */ = {isa = PBXBuildFile; fileRef = 4989F98D20D0AE990001E564 /* sampleConfig.yaml */; }; + 01F3363D2AD10D0B0048AF77 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */; }; + 01F3363E2AD10D0B0048AF77 /* country.mmdb.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01B2274A29B845F100FE35C9 /* country.mmdb.gz */; }; + 01F336402AD10D0B0048AF77 /* com.metacubex.ClashX.ProxyConfigHelper in Copy Files */ = {isa = PBXBuildFile; fileRef = F9A7C0692306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + 01F336482AD139CC0048AF77 /* ClashX Dashboard in Frameworks */ = {isa = PBXBuildFile; productRef = 01F336472AD139CC0048AF77 /* ClashX Dashboard */; }; 275348502A3082FD0077B458 /* TunModeSettingCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2753484F2A3082FD0077B458 /* TunModeSettingCommand.swift */; }; 4905A2C52A2058B000AEDA2E /* GlobalShortCutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4905A2C42A2058B000AEDA2E /* GlobalShortCutViewController.swift */; }; 4905A2C82A2058D400AEDA2E /* KeyboardShortcuts in Frameworks */ = {isa = PBXBuildFile; productRef = 4905A2C72A2058D400AEDA2E /* KeyboardShortcuts */; }; @@ -129,6 +243,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 01F335B52AD10D0B0048AF77 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 49CF3B1520CD7463001EBF94 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F9A7C0682306E874007163C7; + remoteInfo = ProxyConfigHelper; + }; F935B2EB2307B7CD009E4D33 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 49CF3B1520CD7463001EBF94 /* Project object */; @@ -139,6 +260,17 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + 01F3363F2AD10D0B0048AF77 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = Contents/Library/LaunchServices; + dstSubfolderSpec = 1; + files = ( + 01F336402AD10D0B0048AF77 /* com.metacubex.ClashX.ProxyConfigHelper in Copy Files */, + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; 663E4677213FCDC4006F11BB /* Copy Files */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -178,6 +310,8 @@ 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = com.metacubex.ClashX.ProxyConfigHelper.meta.gz; sourceTree = ""; }; 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSColor+Extension.swift"; sourceTree = ""; }; 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon@2x.png"; sourceTree = ""; }; + 01F336442AD10D0B0048AF77 /* ClashX Meta SwiftUI.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ClashX Meta SwiftUI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 01F336452AD10D0B0048AF77 /* ClashX Meta SwiftUI-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "ClashX Meta SwiftUI-Info.plist"; path = "/Users/xjbeta/Developer/Clash/ClashX.Meta/ClashX Meta SwiftUI-Info.plist"; sourceTree = ""; }; 2753484F2A3082FD0077B458 /* TunModeSettingCommand.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TunModeSettingCommand.swift; sourceTree = ""; }; 4905A2C42A2058B000AEDA2E /* GlobalShortCutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalShortCutViewController.swift; sourceTree = ""; }; 4905A2C92A20841B00AEDA2E /* NSView+Layout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSView+Layout.swift"; sourceTree = ""; }; @@ -290,6 +424,27 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 01F336232AD10D0B0048AF77 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 01F336242AD10D0B0048AF77 /* RxSwift in Frameworks */, + 01F336252AD10D0B0048AF77 /* SwiftyJSON in Frameworks */, + 01F336262AD10D0B0048AF77 /* Gzip in Frameworks */, + 01F336272AD10D0B0048AF77 /* CocoaLumberjackSwift in Frameworks */, + 01F336282AD10D0B0048AF77 /* Starscream in Frameworks */, + 01F336292AD10D0B0048AF77 /* PromiseKit in Frameworks */, + 01F3362A2AD10D0B0048AF77 /* KeyboardShortcuts in Frameworks */, + 01F3362B2AD10D0B0048AF77 /* Alamofire in Frameworks */, + 01F3362C2AD10D0B0048AF77 /* CocoaLumberjack in Frameworks */, + 01F3362D2AD10D0B0048AF77 /* Yams in Frameworks */, + 01F3362E2AD10D0B0048AF77 /* RxCocoa in Frameworks */, + 01F336482AD139CC0048AF77 /* ClashX Dashboard in Frameworks */, + 01F3362F2AD10D0B0048AF77 /* FlexibleDiff in Frameworks */, + 01F336302AD10D0B0048AF77 /* libresolv.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 49CF3B1A20CD7463001EBF94 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -536,6 +691,7 @@ children = ( 49CF3B1D20CD7463001EBF94 /* ClashX Meta.app */, F9A7C0692306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */, + 01F336442AD10D0B0048AF77 /* ClashX Meta SwiftUI.app */, ); name = Products; sourceTree = ""; @@ -558,6 +714,7 @@ 49CF3B2020CD7463001EBF94 /* AppDelegate.swift */, 49CF3B2620CD7465001EBF94 /* Main.storyboard */, 49CF3B2920CD7465001EBF94 /* Info.plist */, + 01F336452AD10D0B0048AF77 /* ClashX Meta SwiftUI-Info.plist */, 49CF3B2A20CD7465001EBF94 /* ClashX.entitlements */, 49CF3B3520CD75DF001EBF94 /* ClashX-Bridging-Header.h */, F9FAB31D262BE04800DE02A6 /* Images.xcassets */, @@ -625,6 +782,40 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 01F335B32AD10D0B0048AF77 /* ClashX Meta SwiftUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = 01F336412AD10D0B0048AF77 /* Build configuration list for PBXNativeTarget "ClashX Meta SwiftUI" */; + buildPhases = ( + 01F335CC2AD10D0B0048AF77 /* Sources */, + 01F336232AD10D0B0048AF77 /* Frameworks */, + 01F336312AD10D0B0048AF77 /* Resources */, + 01F3363F2AD10D0B0048AF77 /* Copy Files */, + ); + buildRules = ( + ); + dependencies = ( + 01F335B42AD10D0B0048AF77 /* PBXTargetDependency */, + ); + name = "ClashX Meta SwiftUI"; + packageProductDependencies = ( + 01F335B62AD10D0B0048AF77 /* KeyboardShortcuts */, + 01F335B82AD10D0B0048AF77 /* Alamofire */, + 01F335BA2AD10D0B0048AF77 /* RxCocoa */, + 01F335BC2AD10D0B0048AF77 /* RxSwift */, + 01F335BD2AD10D0B0048AF77 /* SwiftyJSON */, + 01F335BF2AD10D0B0048AF77 /* CocoaLumberjack */, + 01F335C12AD10D0B0048AF77 /* CocoaLumberjackSwift */, + 01F335C22AD10D0B0048AF77 /* Starscream */, + 01F335C42AD10D0B0048AF77 /* FlexibleDiff */, + 01F335C62AD10D0B0048AF77 /* Gzip */, + 01F335C82AD10D0B0048AF77 /* Yams */, + 01F335CA2AD10D0B0048AF77 /* PromiseKit */, + 01F336472AD139CC0048AF77 /* ClashX Dashboard */, + ); + productName = ClashX; + productReference = 01F336442AD10D0B0048AF77 /* ClashX Meta SwiftUI.app */; + productType = "com.apple.product-type.application"; + }; 49CF3B1C20CD7463001EBF94 /* ClashX Meta */ = { isa = PBXNativeTarget; buildConfigurationList = 49CF3B2D20CD7465001EBF94 /* Build configuration list for PBXNativeTarget "ClashX Meta" */; @@ -726,6 +917,7 @@ 015B977E2A4F30EA00F9FA4D /* XCRemoteSwiftPackageReference "GzipSwift" */, 015B97812A4F311300F9FA4D /* XCRemoteSwiftPackageReference "Yams" */, 015B97842A4F31AE00F9FA4D /* XCRemoteSwiftPackageReference "PromiseKit" */, + 01F336462AD139CC0048AF77 /* XCRemoteSwiftPackageReference "ClashX-Dashboard" */, ); productRefGroup = 49CF3B1E20CD7463001EBF94 /* Products */; projectDirPath = ""; @@ -733,11 +925,32 @@ targets = ( 49CF3B1C20CD7463001EBF94 /* ClashX Meta */, F9A7C0682306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */, + 01F335B32AD10D0B0048AF77 /* ClashX Meta SwiftUI */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 01F336312AD10D0B0048AF77 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 01F336322AD10D0B0048AF77 /* geosite.dat.gz in Resources */, + 01F336332AD10D0B0048AF77 /* dashboard in Resources */, + 01F336342AD10D0B0048AF77 /* Localizable.strings in Resources */, + 01F336352AD10D0B0048AF77 /* ProxySetting.sdef in Resources */, + 01F336362AD10D0B0048AF77 /* Images.xcassets in Resources */, + 01F336372AD10D0B0048AF77 /* menu_icon@2x.png in Resources */, + 01F336382AD10D0B0048AF77 /* StatusItemView.xib in Resources */, + 01F336392AD10D0B0048AF77 /* geoip.dat.gz in Resources */, + 01F3363A2AD10D0B0048AF77 /* Main.storyboard in Resources */, + 01F3363B2AD10D0B0048AF77 /* RemoteConfigAddView.xib in Resources */, + 01F3363C2AD10D0B0048AF77 /* sampleConfig.yaml in Resources */, + 01F3363D2AD10D0B0048AF77 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz in Resources */, + 01F3363E2AD10D0B0048AF77 /* country.mmdb.gz in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 49CF3B1B20CD7463001EBF94 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -761,6 +974,99 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 01F335CC2AD10D0B0048AF77 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 01F335CD2AD10D0B0048AF77 /* UnsafePointer+bridge.swift in Sources */, + 01F335CE2AD10D0B0048AF77 /* RemoteConfigViewController.swift in Sources */, + 01F335CF2AD10D0B0048AF77 /* StatusItemTool.swift in Sources */, + 01F335D02AD10D0B0048AF77 /* ClashResourceManager.swift in Sources */, + 01F335D12AD10D0B0048AF77 /* ConfigFileManager.swift in Sources */, + 01F335D22AD10D0B0048AF77 /* AboutViewController.swift in Sources */, + 01F335D32AD10D0B0048AF77 /* Paths.swift in Sources */, + 01F335D42AD10D0B0048AF77 /* TunModeSettingCommand.swift in Sources */, + 01F335D52AD10D0B0048AF77 /* DashboardManager.swift in Sources */, + 01F335D62AD10D0B0048AF77 /* ExternalControlViewController.swift in Sources */, + 01F335D72AD10D0B0048AF77 /* DateFormatter+.swift in Sources */, + 01F335D82AD10D0B0048AF77 /* ClashConnection.swift in Sources */, + 01F335D92AD10D0B0048AF77 /* ConnectionManager.swift in Sources */, + 01F335DA2AD10D0B0048AF77 /* StatusItemView.swift in Sources */, + 01F335DB2AD10D0B0048AF77 /* SystemProxyManager.swift in Sources */, + 01F335DC2AD10D0B0048AF77 /* LaunchAtLogin.swift in Sources */, + 01F335DD2AD10D0B0048AF77 /* Combine+Ext.swift in Sources */, + 01F335DE2AD10D0B0048AF77 /* DebugSettingViewController.swift in Sources */, + 01F335DF2AD10D0B0048AF77 /* ClashWindowController.swift in Sources */, + 01F335E02AD10D0B0048AF77 /* Settings.swift in Sources */, + 01F335E12AD10D0B0048AF77 /* StatusItemViewProtocol.swift in Sources */, + 01F335E22AD10D0B0048AF77 /* AppVersionUtil.swift in Sources */, + 01F335E32AD10D0B0048AF77 /* AppDelegate.swift in Sources */, + 01F335E42AD10D0B0048AF77 /* SpeedUtils.swift in Sources */, + 01F335E52AD10D0B0048AF77 /* Logger.swift in Sources */, + 01F335E62AD10D0B0048AF77 /* NSView+Layout.swift in Sources */, + 01F335E72AD10D0B0048AF77 /* FileEvent.swift in Sources */, + 01F335E82AD10D0B0048AF77 /* AlphaMetaDownloader.swift in Sources */, + 01F335E92AD10D0B0048AF77 /* NetworkChangeNotifier.swift in Sources */, + 01F335EA2AD10D0B0048AF77 /* GlobalShortCutViewController.swift in Sources */, + 01F335EB2AD10D0B0048AF77 /* Notification.swift in Sources */, + 01F335EC2AD10D0B0048AF77 /* ClashMetaConfig.swift in Sources */, + 01F335ED2AD10D0B0048AF77 /* ProxyModeChangeCommand.swift in Sources */, + 01F335EE2AD10D0B0048AF77 /* GeneralSettingViewController.swift in Sources */, + 01F335EF2AD10D0B0048AF77 /* RemoteConfigUpdateIntervalSettingView.swift in Sources */, + 01F335F02AD10D0B0048AF77 /* AppDelegate+..swift in Sources */, + 01F335F12AD10D0B0048AF77 /* NSView+Nib.swift in Sources */, + 01F335F22AD10D0B0048AF77 /* ProxyDelayHistoryMenu.swift in Sources */, + 01F335F32AD10D0B0048AF77 /* NSColor+Extension.swift in Sources */, + 01F335F42AD10D0B0048AF77 /* ClashConfig.swift in Sources */, + 01F335F52AD10D0B0048AF77 /* ApiRequest.swift in Sources */, + 01F335F62AD10D0B0048AF77 /* ConfigManager.swift in Sources */, + 01F335F72AD10D0B0048AF77 /* TerminalCleanUpAction.swift in Sources */, + 01F335F82AD10D0B0048AF77 /* WebPortalManager.swift in Sources */, + 01F335F92AD10D0B0048AF77 /* DualTitleMenuItem.swift in Sources */, + 01F335FA2AD10D0B0048AF77 /* RemoteConfigManager.swift in Sources */, + 01F335FB2AD10D0B0048AF77 /* Cgo+Convert.swift in Sources */, + 01F335FC2AD10D0B0048AF77 /* ProxySettingCommand.swift in Sources */, + 01F335FD2AD10D0B0048AF77 /* Witness.swift in Sources */, + 01F335FE2AD10D0B0048AF77 /* EventStream.swift in Sources */, + 01F335FF2AD10D0B0048AF77 /* Array+Safe.swift in Sources */, + 01F336002AD10D0B0048AF77 /* SavedProxyModel.swift in Sources */, + 01F336012AD10D0B0048AF77 /* NSTextField+Vibrancy.swift in Sources */, + 01F336022AD10D0B0048AF77 /* SSIDSuspendTool.swift in Sources */, + 01F336032AD10D0B0048AF77 /* ProxyGroupMenu.swift in Sources */, + 01F336042AD10D0B0048AF77 /* MenuItemFactory.swift in Sources */, + 01F336052AD10D0B0048AF77 /* MetaTask.swift in Sources */, + 01F336062AD10D0B0048AF77 /* AutoUpgardeManager.swift in Sources */, + 01F336072AD10D0B0048AF77 /* RemoteConfigModel.swift in Sources */, + 01F336082AD10D0B0048AF77 /* ProxyGroupMenuItemView.swift in Sources */, + 01F336092AD10D0B0048AF77 /* PrivilegedHelperManager.swift in Sources */, + 01F3360A2AD10D0B0048AF77 /* PrivilegedHelperManager+Legacy.swift in Sources */, + 01F3360B2AD10D0B0048AF77 /* NSUserNotificationCenter+Extension.swift in Sources */, + 01F3360C2AD10D0B0048AF77 /* NSAlert+Extension.swift in Sources */, + 01F3360D2AD10D0B0048AF77 /* ClashWebViewContoller.swift in Sources */, + 01F3360E2AD10D0B0048AF77 /* ProxyGroupSpeedTestMenuItem.swift in Sources */, + 01F3360F2AD10D0B0048AF77 /* LoginServiceKit.swift in Sources */, + 01F336102AD10D0B0048AF77 /* NormalMenuItemView.swift in Sources */, + 01F336112AD10D0B0048AF77 /* ProxyItemView.swift in Sources */, + 01F336122AD10D0B0048AF77 /* ICloudManager.swift in Sources */, + 01F336132AD10D0B0048AF77 /* String+Extension.swift in Sources */, + 01F336142AD10D0B0048AF77 /* MenuItemBaseView.swift in Sources */, + 01F336152AD10D0B0048AF77 /* RemoteControlManager.swift in Sources */, + 01F336162AD10D0B0048AF77 /* LoginKitWrapper.m in Sources */, + 01F336172AD10D0B0048AF77 /* ProxyMenuItem.swift in Sources */, + 01F336182AD10D0B0048AF77 /* UpdateExternalResourceAction.swift in Sources */, + 01F336192AD10D0B0048AF77 /* UpdateConfigAction.swift in Sources */, + 01F3361A2AD10D0B0048AF77 /* NSTableView+Reload.swift in Sources */, + 01F3361B2AD10D0B0048AF77 /* ClashProvider.swift in Sources */, + 01F3361C2AD10D0B0048AF77 /* SettingTabViewController.swift in Sources */, + 01F3361D2AD10D0B0048AF77 /* ClashRule.swift in Sources */, + 01F3361E2AD10D0B0048AF77 /* ClashRuleProvider.swift in Sources */, + 01F3361F2AD10D0B0048AF77 /* ClashProxy.swift in Sources */, + 01F336202AD10D0B0048AF77 /* UserDefaultWrapper.swift in Sources */, + 01F336212AD10D0B0048AF77 /* String+Encode.swift in Sources */, + 01F336222AD10D0B0048AF77 /* ClashStatusTool.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 49CF3B1920CD7463001EBF94 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -870,6 +1176,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 01F335B42AD10D0B0048AF77 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F9A7C0682306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */; + targetProxy = 01F335B52AD10D0B0048AF77 /* PBXContainerItemProxy */; + }; F935B2EC2307B7CD009E4D33 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F9A7C0682306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */; @@ -901,6 +1212,98 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 01F336422AD10D0B0048AF77 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = ClashX/ClashX.entitlements; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Manual; + COMBINE_HIDPI_IMAGES = YES; + COMPRESS_PNG_FILES = YES; + CURRENT_PROJECT_VERSION = 0; + DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = ""; + ENABLE_HARDENED_RUNTIME = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/ClashX/Support\\ Files", + "$(PROJECT_DIR)/ClashX/Support\\ Files", + "$(PROJECT_DIR)/ClashX/Support\\ Files", + "$(PROJECT_DIR)/ClashX/Support\\ Files", + ); + INFOPLIST_FILE = "ClashX Meta SwiftUI-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/ClashX", + ); + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = v1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.meta; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + STRIP_PNG_TEXT = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG SwiftUI_Version"; + SWIFT_OBJC_BRIDGING_HEADER = "ClashX/ClashX-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 01F336432AD10D0B0048AF77 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = ClashX/ClashX.entitlements; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Manual; + COMBINE_HIDPI_IMAGES = YES; + COMPRESS_PNG_FILES = YES; + COPY_PHASE_STRIP = YES; + CURRENT_PROJECT_VERSION = 0; + DEAD_CODE_STRIPPING = YES; + DEPLOYMENT_POSTPROCESSING = YES; + DEVELOPMENT_TEAM = ""; + ENABLE_HARDENED_RUNTIME = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/ClashX/Support\\ Files", + "$(PROJECT_DIR)/ClashX/Support\\ Files", + "$(PROJECT_DIR)/ClashX/Support\\ Files", + "$(PROJECT_DIR)/ClashX/Support\\ Files", + ); + INFOPLIST_FILE = "ClashX Meta SwiftUI-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/ClashX", + ); + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = v1.0; + OTHER_CODE_SIGN_FLAGS = "--timestamp"; + PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.meta; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + STRIP_PNG_TEXT = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = SwiftUI_Version; + SWIFT_OBJC_BRIDGING_HEADER = "ClashX/ClashX-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; 49CF3B2B20CD7465001EBF94 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1198,6 +1601,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 01F336412AD10D0B0048AF77 /* Build configuration list for PBXNativeTarget "ClashX Meta SwiftUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 01F336422AD10D0B0048AF77 /* Debug */, + 01F336432AD10D0B0048AF77 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 49CF3B1820CD7463001EBF94 /* Build configuration list for PBXProject "ClashX" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1300,6 +1712,94 @@ minimumVersion = 8.0.0; }; }; + 01F335B72AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/sindresorhus/KeyboardShortcuts.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.0.0; + }; + }; + 01F335B92AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "Alamofire" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Alamofire/Alamofire"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; + }; + }; + 01F335BB2AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "RxSwift" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/ReactiveX/RxSwift"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 6.0.0; + }; + }; + 01F335BE2AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "SwiftyJSON" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SwiftyJSON/SwiftyJSON"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; + }; + }; + 01F335C02AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/CocoaLumberjack/CocoaLumberjack"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.0.0; + }; + }; + 01F335C32AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "Starscream" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/daltoniam/Starscream"; + requirement = { + kind = exactVersion; + version = 3.1.1; + }; + }; + 01F335C52AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "FlexibleDiff" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/RACCommunity/FlexibleDiff"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.0.9; + }; + }; + 01F335C72AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "GzipSwift" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/1024jp/GzipSwift"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 6.0.0; + }; + }; + 01F335C92AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "Yams" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/jpsim/Yams"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; + }; + }; + 01F335CB2AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "PromiseKit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/mxcl/PromiseKit"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 8.0.0; + }; + }; + 01F336462AD139CC0048AF77 /* XCRemoteSwiftPackageReference "ClashX-Dashboard" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/mrFq1/ClashX-Dashboard"; + requirement = { + branch = dev; + kind = branch; + }; + }; 4905A2C62A2058D400AEDA2E /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/sindresorhus/KeyboardShortcuts.git"; @@ -1366,6 +1866,71 @@ package = 015B97842A4F31AE00F9FA4D /* XCRemoteSwiftPackageReference "PromiseKit" */; productName = PromiseKit; }; + 01F335B62AD10D0B0048AF77 /* KeyboardShortcuts */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335B72AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */; + productName = KeyboardShortcuts; + }; + 01F335B82AD10D0B0048AF77 /* Alamofire */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335B92AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "Alamofire" */; + productName = Alamofire; + }; + 01F335BA2AD10D0B0048AF77 /* RxCocoa */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335BB2AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "RxSwift" */; + productName = RxCocoa; + }; + 01F335BC2AD10D0B0048AF77 /* RxSwift */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335BB2AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "RxSwift" */; + productName = RxSwift; + }; + 01F335BD2AD10D0B0048AF77 /* SwiftyJSON */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335BE2AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "SwiftyJSON" */; + productName = SwiftyJSON; + }; + 01F335BF2AD10D0B0048AF77 /* CocoaLumberjack */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335C02AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; + productName = CocoaLumberjack; + }; + 01F335C12AD10D0B0048AF77 /* CocoaLumberjackSwift */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335C02AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "CocoaLumberjack" */; + productName = CocoaLumberjackSwift; + }; + 01F335C22AD10D0B0048AF77 /* Starscream */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335C32AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "Starscream" */; + productName = Starscream; + }; + 01F335C42AD10D0B0048AF77 /* FlexibleDiff */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335C52AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "FlexibleDiff" */; + productName = FlexibleDiff; + }; + 01F335C62AD10D0B0048AF77 /* Gzip */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335C72AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "GzipSwift" */; + productName = Gzip; + }; + 01F335C82AD10D0B0048AF77 /* Yams */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335C92AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "Yams" */; + productName = Yams; + }; + 01F335CA2AD10D0B0048AF77 /* PromiseKit */ = { + isa = XCSwiftPackageProductDependency; + package = 01F335CB2AD10D0B0048AF77 /* XCRemoteSwiftPackageReference "PromiseKit" */; + productName = PromiseKit; + }; + 01F336472AD139CC0048AF77 /* ClashX Dashboard */ = { + isa = XCSwiftPackageProductDependency; + package = 01F336462AD139CC0048AF77 /* XCRemoteSwiftPackageReference "ClashX-Dashboard" */; + productName = "ClashX Dashboard"; + }; 4905A2C72A2058D400AEDA2E /* KeyboardShortcuts */ = { isa = XCSwiftPackageProductDependency; package = 4905A2C62A2058D400AEDA2E /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */; diff --git a/ClashX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ClashX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 8281b42d6..d9950a63a 100644 --- a/ClashX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ClashX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -9,6 +9,15 @@ "version" : "5.8.0" } }, + { + "identity" : "clashx-dashboard", + "kind" : "remoteSourceControl", + "location" : "https://github.com/mrFq1/ClashX-Dashboard", + "state" : { + "branch" : "dev", + "revision" : "272999024e836c5b006b0f3869fa4a1f5d27286b" + } + }, { "identity" : "cocoalumberjack", "kind" : "remoteSourceControl", @@ -18,6 +27,15 @@ "version" : "3.8.1" } }, + { + "identity" : "dsfsparkline", + "kind" : "remoteSourceControl", + "location" : "https://github.com/dagronf/DSFSparkline.git", + "state" : { + "revision" : "cfcf80b9e214500cbc12b795b7c9943151b8bd4f", + "version" : "4.6.4" + } + }, { "identity" : "flexiblediff", "kind" : "remoteSourceControl", @@ -108,6 +126,15 @@ "version" : "1.0.0" } }, + { + "identity" : "swiftui-introspect", + "kind" : "remoteSourceControl", + "location" : "https://github.com/siteline/swiftui-introspect", + "state" : { + "revision" : "121c146fe591b1320238d054ae35c81ffa45f45a", + "version" : "0.12.0" + } + }, { "identity" : "swiftyjson", "kind" : "remoteSourceControl", diff --git a/ClashX SwiftUI.xcodeproj/xcshareddata/xcschemes/ClashX Meta.xcscheme b/ClashX.xcodeproj/xcshareddata/xcschemes/ClashX Meta SwiftUI.xcscheme similarity index 75% rename from ClashX SwiftUI.xcodeproj/xcshareddata/xcschemes/ClashX Meta.xcscheme rename to ClashX.xcodeproj/xcshareddata/xcschemes/ClashX Meta SwiftUI.xcscheme index 274480923..1b34a3874 100644 --- a/ClashX SwiftUI.xcodeproj/xcshareddata/xcschemes/ClashX Meta.xcscheme +++ b/ClashX.xcodeproj/xcshareddata/xcschemes/ClashX Meta SwiftUI.xcscheme @@ -14,10 +14,10 @@ buildForAnalyzing = "YES"> + BlueprintIdentifier = "01F335B32AD10D0B0048AF77" + BuildableName = "ClashX Meta SwiftUI.app" + BlueprintName = "ClashX Meta SwiftUI" + ReferencedContainer = "container:ClashX.xcodeproj"> @@ -44,10 +44,10 @@ runnableDebuggingMode = "0"> + BlueprintIdentifier = "01F335B32AD10D0B0048AF77" + BuildableName = "ClashX Meta SwiftUI.app" + BlueprintName = "ClashX Meta SwiftUI" + ReferencedContainer = "container:ClashX.xcodeproj"> @@ -61,10 +61,10 @@ runnableDebuggingMode = "0"> + BlueprintIdentifier = "01F335B32AD10D0B0048AF77" + BuildableName = "ClashX Meta SwiftUI.app" + BlueprintName = "ClashX Meta SwiftUI" + ReferencedContainer = "container:ClashX.xcodeproj"> diff --git a/ClashX/ViewControllers/DashboardManager.swift b/ClashX/ViewControllers/DashboardManager.swift index 73c3a600a..61e253080 100644 --- a/ClashX/ViewControllers/DashboardManager.swift +++ b/ClashX/ViewControllers/DashboardManager.swift @@ -6,23 +6,111 @@ // import Cocoa +import RxSwift +#if SwiftUI_Version +import ClashX_Dashboard +#endif + class DashboardManager: NSObject { static let shared = DashboardManager() + override init() { + } + +#if SwiftUI_Version + let enableSwiftUI = true + var useYacd = MenuItemFactory.useYacdDashboard { + didSet { + if useYacd { + deinitNotifications() + dashboardWindowController?.close() + } else { + clashWebWindowController?.close() + } + } + } + var dashboardWindowController: DashboardWindowController? +#else let enableSwiftUI = false var useYacd = true - - var dashboardWindowController: ClashWebViewWindowController? +#endif + + private var disposables = [Disposable]() + + var clashWebWindowController: ClashWebViewWindowController? + func show(_ sender: NSMenuItem?) { +#if SwiftUI_Version + initNotifications() + + if useYacd { + dashboardWindowController = nil + showWebWindow(sender) + } else { + clashWebWindowController = nil + showSwiftUIWindow(sender) + } +#else + showWebWindow(sender) +#endif + } + + func showWebWindow(_ sender: NSMenuItem?) { + if clashWebWindowController == nil { + clashWebWindowController = ClashWebViewWindowController.create() + clashWebWindowController?.onWindowClose = { + [weak self] in + self?.clashWebWindowController = nil + } + } + clashWebWindowController?.showWindow(sender) + } + + func deinitNotifications() { + disposables.forEach { + $0.dispose() + } + disposables.removeAll() + } + + deinit { + deinitNotifications() + } +} + +#if SwiftUI_Version +extension DashboardManager { + func showSwiftUIWindow(_ sender: NSMenuItem?) { if dashboardWindowController == nil { - dashboardWindowController = ClashWebViewWindowController.create() + dashboardWindowController = DashboardWindowController.create() dashboardWindowController?.onWindowClose = { [weak self] in self?.dashboardWindowController = nil } } + + dashboardWindowController?.set(ConfigManager.apiUrl, secret: ConfigManager.shared.overrideSecret ?? ConfigManager.shared.apiSecret) + dashboardWindowController?.showWindow(sender) } + + func initNotifications() { + guard !useYacd, disposables.count == 0 else { return } + + let n1 = NotificationCenter.default.rx.notification(.configFileChange).subscribe { + [weak self] _ in + self?.dashboardWindowController?.reload() + } + + let n2 = NotificationCenter.default.rx.notification(.reloadDashboard).subscribe { + [weak self] _ in + self?.dashboardWindowController?.reload() + } + disposables.append(n1) + disposables.append(n2) + } + } +#endif diff --git a/ClashX/ViewControllers/DashboardManagerSwiftUI.swift b/ClashX/ViewControllers/DashboardManagerSwiftUI.swift deleted file mode 100644 index de1a8dcd6..000000000 --- a/ClashX/ViewControllers/DashboardManagerSwiftUI.swift +++ /dev/null @@ -1,100 +0,0 @@ -// -// DashboardManagerSwiftUI.swift -// ClashX Meta -// -// Copyright © 2023 west2online. All rights reserved. -// - -import Cocoa -import RxSwift -import ClashX_Dashboard - -class DashboardManager: NSObject { - - private var disposables = [Disposable]() - - static let shared = DashboardManager() - - override init() { - } - - let enableSwiftUI = true - - var useYacd = MenuItemFactory.useYacdDashboard { - didSet { - if useYacd { - deinitNotifications() - dashboardWindowController?.close() - } else { - yacdWindowController?.close() - } - } - } - - var yacdWindowController: ClashWebViewWindowController? - var dashboardWindowController: DashboardWindowController? - - func show(_ sender: NSMenuItem?) { - initNotifications() - - if useYacd { - dashboardWindowController = nil - showWebWindow(sender) - } else { - yacdWindowController = nil - showSwiftUIWindow(sender) - } - } - - func showWebWindow(_ sender: NSMenuItem?) { - if yacdWindowController == nil { - yacdWindowController = ClashWebViewWindowController.create() - yacdWindowController?.onWindowClose = { - [weak self] in - self?.yacdWindowController = nil - } - } - yacdWindowController?.showWindow(sender) - } - - func showSwiftUIWindow(_ sender: NSMenuItem?) { - if dashboardWindowController == nil { - dashboardWindowController = DashboardWindowController.create() - dashboardWindowController?.onWindowClose = { - [weak self] in - self?.dashboardWindowController = nil - } - } - - dashboardWindowController?.set(ConfigManager.apiUrl, secret: ConfigManager.shared.overrideSecret ?? ConfigManager.shared.apiSecret) - - dashboardWindowController?.showWindow(sender) - } - - func initNotifications() { - guard !useYacd, disposables.count == 0 else { return } - - let n1 = NotificationCenter.default.rx.notification(.configFileChange).subscribe { - [weak self] _ in - self?.dashboardWindowController?.reload() - } - - let n2 = NotificationCenter.default.rx.notification(.reloadDashboard).subscribe { - [weak self] _ in - self?.dashboardWindowController?.reload() - } - disposables.append(n1) - disposables.append(n2) - } - - func deinitNotifications() { - disposables.forEach { - $0.dispose() - } - disposables.removeAll() - } - - deinit { - deinitNotifications() - } -} From f497008435618f27fc4554acbecbe51c9cbe7eb7 Mon Sep 17 00:00:00 2001 From: mrFq1 <1xxbx0il0@mozmail.com> Date: Sat, 7 Oct 2023 16:50:23 +0800 Subject: [PATCH 3/6] misc: fix ci --- .github/workflows/main.yml | 8 ++++---- ClashX.xcodeproj/project.pbxproj | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index adfed918b..35bc3fd4a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -51,20 +51,20 @@ jobs: - name: install deps - run: bash install_dependency.sh + run: | + bash install_dependency.sh + xcodebuild -resolvePackageDependencies -project ClashX.xcodeproj - name: build if: startsWith(github.ref, 'refs/tags/') run: | - xcodebuild -resolvePackageDependencies -project ClashX.xcodeproj xcodebuild archive -project ClashX.xcodeproj -scheme ClashX\ Meta -archivePath archive/ClashX.xcarchive -showBuildTimingSummary -allowProvisioningUpdates - name: build-SwiftUI run: | - xcodebuild -resolvePackageDependencies -project ClashX\ SwiftUI.xcodeproj - xcodebuild archive -project ClashX\ SwiftUI.xcodeproj -scheme ClashX\ Meta -archivePath archive/ClashX\ SwiftUI.xcarchive -showBuildTimingSummary -allowProvisioningUpdates + xcodebuild archive -project ClashX.xcodeproj -scheme ClashX\ Meta\ SwiftUI -archivePath archive/ClashX\ SwiftUI.xcarchive -showBuildTimingSummary -allowProvisioningUpdates - name: create zip diff --git a/ClashX.xcodeproj/project.pbxproj b/ClashX.xcodeproj/project.pbxproj index 8307765d1..1027eef87 100644 --- a/ClashX.xcodeproj/project.pbxproj +++ b/ClashX.xcodeproj/project.pbxproj @@ -310,7 +310,7 @@ 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = com.metacubex.ClashX.ProxyConfigHelper.meta.gz; sourceTree = ""; }; 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSColor+Extension.swift"; sourceTree = ""; }; 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon@2x.png"; sourceTree = ""; }; - 01F336442AD10D0B0048AF77 /* ClashX Meta SwiftUI.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ClashX Meta SwiftUI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 01F336442AD10D0B0048AF77 /* ClashX Meta.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ClashX Meta.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 01F336452AD10D0B0048AF77 /* ClashX Meta SwiftUI-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "ClashX Meta SwiftUI-Info.plist"; path = "/Users/xjbeta/Developer/Clash/ClashX.Meta/ClashX Meta SwiftUI-Info.plist"; sourceTree = ""; }; 2753484F2A3082FD0077B458 /* TunModeSettingCommand.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TunModeSettingCommand.swift; sourceTree = ""; }; 4905A2C42A2058B000AEDA2E /* GlobalShortCutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalShortCutViewController.swift; sourceTree = ""; }; @@ -691,7 +691,7 @@ children = ( 49CF3B1D20CD7463001EBF94 /* ClashX Meta.app */, F9A7C0692306E874007163C7 /* com.metacubex.ClashX.ProxyConfigHelper */, - 01F336442AD10D0B0048AF77 /* ClashX Meta SwiftUI.app */, + 01F336442AD10D0B0048AF77 /* ClashX Meta.app */, ); name = Products; sourceTree = ""; @@ -813,7 +813,7 @@ 01F336472AD139CC0048AF77 /* ClashX Dashboard */, ); productName = ClashX; - productReference = 01F336442AD10D0B0048AF77 /* ClashX Meta SwiftUI.app */; + productReference = 01F336442AD10D0B0048AF77 /* ClashX Meta.app */; productType = "com.apple.product-type.application"; }; 49CF3B1C20CD7463001EBF94 /* ClashX Meta */ = { @@ -1247,7 +1247,7 @@ MACOSX_DEPLOYMENT_TARGET = 12.0; MARKETING_VERSION = v1.0; PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.meta; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = "ClashX Meta"; PROVISIONING_PROFILE_SPECIFIER = ""; STRIP_PNG_TEXT = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG SwiftUI_Version"; @@ -1295,7 +1295,7 @@ MARKETING_VERSION = v1.0; OTHER_CODE_SIGN_FLAGS = "--timestamp"; PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.meta; - PRODUCT_NAME = "$(TARGET_NAME)"; + PRODUCT_NAME = "ClashX Meta"; PROVISIONING_PROFILE_SPECIFIER = ""; STRIP_PNG_TEXT = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = SwiftUI_Version; From d938c62c40fad52aa575bb5f52a9098e444d7a9d Mon Sep 17 00:00:00 2001 From: mrFq1 <1xxbx0il0@mozmail.com> Date: Sat, 7 Oct 2023 17:04:21 +0800 Subject: [PATCH 4/6] misc: builds --- ClashX.xcodeproj/project.pbxproj | 8 +- .../xcschemes/ClashX Meta SwiftUI.xcscheme | 6 +- .../ClashX Meta SwiftUI-Info.plist | 0 ClashX/goClash/proccess.go | 108 ------------------ 4 files changed, 7 insertions(+), 115 deletions(-) rename ClashX Meta SwiftUI-Info.plist => ClashX/ClashX Meta SwiftUI-Info.plist (100%) delete mode 100644 ClashX/goClash/proccess.go diff --git a/ClashX.xcodeproj/project.pbxproj b/ClashX.xcodeproj/project.pbxproj index 1027eef87..b0cc0fc4c 100644 --- a/ClashX.xcodeproj/project.pbxproj +++ b/ClashX.xcodeproj/project.pbxproj @@ -308,10 +308,10 @@ 01B2274A29B845F100FE35C9 /* country.mmdb.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = country.mmdb.gz; sourceTree = ""; }; 01BC9ABD2928E5C600F9B177 /* MetaDNS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetaDNS.swift; sourceTree = ""; }; 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = com.metacubex.ClashX.ProxyConfigHelper.meta.gz; sourceTree = ""; }; + 01D567DF2AD1562700CDA0AE /* ClashX Meta SwiftUI-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ClashX Meta SwiftUI-Info.plist"; sourceTree = ""; }; 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSColor+Extension.swift"; sourceTree = ""; }; 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon@2x.png"; sourceTree = ""; }; 01F336442AD10D0B0048AF77 /* ClashX Meta.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ClashX Meta.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 01F336452AD10D0B0048AF77 /* ClashX Meta SwiftUI-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "ClashX Meta SwiftUI-Info.plist"; path = "/Users/xjbeta/Developer/Clash/ClashX.Meta/ClashX Meta SwiftUI-Info.plist"; sourceTree = ""; }; 2753484F2A3082FD0077B458 /* TunModeSettingCommand.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TunModeSettingCommand.swift; sourceTree = ""; }; 4905A2C42A2058B000AEDA2E /* GlobalShortCutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalShortCutViewController.swift; sourceTree = ""; }; 4905A2C92A20841B00AEDA2E /* NSView+Layout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSView+Layout.swift"; sourceTree = ""; }; @@ -714,7 +714,7 @@ 49CF3B2020CD7463001EBF94 /* AppDelegate.swift */, 49CF3B2620CD7465001EBF94 /* Main.storyboard */, 49CF3B2920CD7465001EBF94 /* Info.plist */, - 01F336452AD10D0B0048AF77 /* ClashX Meta SwiftUI-Info.plist */, + 01D567DF2AD1562700CDA0AE /* ClashX Meta SwiftUI-Info.plist */, 49CF3B2A20CD7465001EBF94 /* ClashX.entitlements */, 49CF3B3520CD75DF001EBF94 /* ClashX-Bridging-Header.h */, F9FAB31D262BE04800DE02A6 /* Images.xcassets */, @@ -1234,7 +1234,7 @@ "$(PROJECT_DIR)/ClashX/Support\\ Files", "$(PROJECT_DIR)/ClashX/Support\\ Files", ); - INFOPLIST_FILE = "ClashX Meta SwiftUI-Info.plist"; + INFOPLIST_FILE = "ClashX/ClashX Meta SwiftUI-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -1281,7 +1281,7 @@ "$(PROJECT_DIR)/ClashX/Support\\ Files", "$(PROJECT_DIR)/ClashX/Support\\ Files", ); - INFOPLIST_FILE = "ClashX Meta SwiftUI-Info.plist"; + INFOPLIST_FILE = "ClashX/ClashX Meta SwiftUI-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", diff --git a/ClashX.xcodeproj/xcshareddata/xcschemes/ClashX Meta SwiftUI.xcscheme b/ClashX.xcodeproj/xcshareddata/xcschemes/ClashX Meta SwiftUI.xcscheme index 1b34a3874..5ad8c3342 100644 --- a/ClashX.xcodeproj/xcshareddata/xcschemes/ClashX Meta SwiftUI.xcscheme +++ b/ClashX.xcodeproj/xcshareddata/xcschemes/ClashX Meta SwiftUI.xcscheme @@ -15,7 +15,7 @@ @@ -45,7 +45,7 @@ @@ -62,7 +62,7 @@ diff --git a/ClashX Meta SwiftUI-Info.plist b/ClashX/ClashX Meta SwiftUI-Info.plist similarity index 100% rename from ClashX Meta SwiftUI-Info.plist rename to ClashX/ClashX Meta SwiftUI-Info.plist diff --git a/ClashX/goClash/proccess.go b/ClashX/goClash/proccess.go deleted file mode 100644 index b3e6b29bd..000000000 --- a/ClashX/goClash/proccess.go +++ /dev/null @@ -1,108 +0,0 @@ -package main - -import ( - "encoding/binary" - "fmt" - "net/netip" - "strconv" - "strings" - "syscall" - "unsafe" -) - -const ( - procpidpathinfo = 0xb - procpidpathinfosize = 1024 - proccallnumpidinfo = 0x2 -) - -var structSize = func() int { - value, _ := syscall.Sysctl("kern.osrelease") - major, _, _ := strings.Cut(value, ".") - n, _ := strconv.ParseInt(major, 10, 64) - switch true { - case n >= 22: - return 408 - default: - // from darwin-xnu/bsd/netinet/in_pcblist.c:get_pcblist_n - // size/offset are round up (aligned) to 8 bytes in darwin - // rup8(sizeof(xinpcb_n)) + rup8(sizeof(xsocket_n)) + - // 2 * rup8(sizeof(xsockbuf_n)) + rup8(sizeof(xsockstat_n)) - return 384 - } -}() - -func GetTcpNetList() string { - value, err := syscall.Sysctl("net.inet.tcp.pcblist_n") - if err != nil { - return "" - } - - buf := []byte(value) - itemSize := structSize - // tcp - // rup8(sizeof(xtcpcb_n)) - itemSize += 208 - - result := "" - for i := 24; i+itemSize <= len(buf); i += itemSize { - // offset of xinpcb_n and xsocket_n - inp, so := i, i+104 - srcPort := binary.BigEndian.Uint16(buf[inp+18 : inp+20]) - // xinpcb_n.inp_vflag - flag := buf[inp+44] - - var srcIP netip.Addr - switch { - case flag&0x1 > 0: - // ipv4 - srcIP = netip.AddrFrom4([4]byte(buf[inp+76 : inp+80])) - case flag&0x2 > 0: - // ipv6 - srcIP = netip.AddrFrom16([16]byte(buf[inp+64 : inp+80])) - default: - continue - } - pid := readNativeUint32(buf[so+68 : so+72]) - result += fmt.Sprintf("%s %d %d\n", srcIP, srcPort, pid) - } - return result -} - -func GetUDpList() string { - value, err := syscall.Sysctl("net.inet.udp.pcblist_n") - if err != nil { - return "" - } - - buf := []byte(value) - itemSize := structSize - result := "" - - for i := 24; i+itemSize <= len(buf); i += itemSize { - // offset of xinpcb_n and xsocket_n - inp, so := i, i+104 - srcPort := binary.BigEndian.Uint16(buf[inp+18 : inp+20]) - // xinpcb_n.inp_vflag - flag := buf[inp+44] - var srcIP netip.Addr - switch { - case flag&0x1 > 0: - // ipv4 - srcIP = netip.AddrFrom4([4]byte(buf[inp+76 : inp+80])) - case flag&0x2 > 0: - // ipv6 - srcIP = netip.AddrFrom16([16]byte(buf[inp+64 : inp+80])) - default: - continue - } - - pid := readNativeUint32(buf[so+68 : so+72]) - result += fmt.Sprintf("%s %d %d\n", srcIP, srcPort, pid) - } - return result -} - -func readNativeUint32(b []byte) uint32 { - return *(*uint32)(unsafe.Pointer(&b[0])) -} From c2bb3f570fd184a145e2f2d14ac9653bbf922af8 Mon Sep 17 00:00:00 2001 From: mrFq1 <1xxbx0il0@mozmail.com> Date: Sun, 8 Oct 2023 15:36:07 +0800 Subject: [PATCH 5/6] feat: meta setting view --- ClashX.xcodeproj/project.pbxproj | 12 + ClashX/AppDelegate.swift | 102 +------ ClashX/Base.lproj/Main.storyboard | 59 +--- ClashX/General/ClashMetaConfig.swift | 5 +- ClashX/General/Managers/ConfigManager.swift | 21 ++ ClashX/General/Managers/MenuItemFactory.swift | 12 - .../ClashWebViewContoller.swift | 7 +- ClashX/ViewControllers/DashboardManager.swift | 31 +- .../Settings/MetaPrefs.storyboard | 268 ++++++++++++++++++ .../Settings/MetaPrefsViewController.swift | 161 +++++++++++ install_dependency.sh | 14 +- 11 files changed, 512 insertions(+), 180 deletions(-) create mode 100644 ClashX/ViewControllers/Settings/MetaPrefs.storyboard create mode 100644 ClashX/ViewControllers/Settings/MetaPrefsViewController.swift diff --git a/ClashX.xcodeproj/project.pbxproj b/ClashX.xcodeproj/project.pbxproj index b0cc0fc4c..e950be5e2 100644 --- a/ClashX.xcodeproj/project.pbxproj +++ b/ClashX.xcodeproj/project.pbxproj @@ -31,6 +31,10 @@ 01B2274B29B845F100FE35C9 /* country.mmdb.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01B2274A29B845F100FE35C9 /* country.mmdb.gz */; }; 01BC9ABE2928EB5A00F9B177 /* MetaDNS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01BC9ABD2928E5C600F9B177 /* MetaDNS.swift */; }; 01C1462A28962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz in Resources */ = {isa = PBXBuildFile; fileRef = 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */; }; + 01D567E32AD158B600CDA0AE /* MetaPrefs.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 01D567E12AD158B500CDA0AE /* MetaPrefs.storyboard */; }; + 01D567E42AD158B600CDA0AE /* MetaPrefs.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 01D567E12AD158B500CDA0AE /* MetaPrefs.storyboard */; }; + 01D567E52AD158B600CDA0AE /* MetaPrefsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D567E22AD158B500CDA0AE /* MetaPrefsViewController.swift */; }; + 01D567E62AD158B600CDA0AE /* MetaPrefsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D567E22AD158B500CDA0AE /* MetaPrefsViewController.swift */; }; 01E33AB229B5BF4200FD1006 /* NSColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */; }; 01E33AB529B5C5E400FD1006 /* menu_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */; }; 01F335CD2AD10D0B0048AF77 /* UnsafePointer+bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49ABB748236B0F9E00535CD7 /* UnsafePointer+bridge.swift */; }; @@ -309,6 +313,8 @@ 01BC9ABD2928E5C600F9B177 /* MetaDNS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetaDNS.swift; sourceTree = ""; }; 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = com.metacubex.ClashX.ProxyConfigHelper.meta.gz; sourceTree = ""; }; 01D567DF2AD1562700CDA0AE /* ClashX Meta SwiftUI-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ClashX Meta SwiftUI-Info.plist"; sourceTree = ""; }; + 01D567E12AD158B500CDA0AE /* MetaPrefs.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MetaPrefs.storyboard; sourceTree = ""; }; + 01D567E22AD158B500CDA0AE /* MetaPrefsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MetaPrefsViewController.swift; sourceTree = ""; }; 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSColor+Extension.swift"; sourceTree = ""; }; 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon@2x.png"; sourceTree = ""; }; 01F336442AD10D0B0048AF77 /* ClashX Meta.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ClashX Meta.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -647,6 +653,8 @@ 498BC2542929CCAE00CA8084 /* GeneralSettingViewController.swift */, 49281C7F2A1F01FA00F60935 /* DebugSettingViewController.swift */, 4905A2C42A2058B000AEDA2E /* GlobalShortCutViewController.swift */, + 01D567E12AD158B500CDA0AE /* MetaPrefs.storyboard */, + 01D567E22AD158B500CDA0AE /* MetaPrefsViewController.swift */, ); path = Settings; sourceTree = ""; @@ -939,6 +947,7 @@ 01F336332AD10D0B0048AF77 /* dashboard in Resources */, 01F336342AD10D0B0048AF77 /* Localizable.strings in Resources */, 01F336352AD10D0B0048AF77 /* ProxySetting.sdef in Resources */, + 01D567E42AD158B600CDA0AE /* MetaPrefs.storyboard in Resources */, 01F336362AD10D0B0048AF77 /* Images.xcassets in Resources */, 01F336372AD10D0B0048AF77 /* menu_icon@2x.png in Resources */, 01F336382AD10D0B0048AF77 /* StatusItemView.xib in Resources */, @@ -959,6 +968,7 @@ 49761DA721C9497000AE13EF /* dashboard in Resources */, 4981C88B216BAE4A008CC14A /* Localizable.strings in Resources */, 8A2BBEA727A03ACB0081EBEF /* ProxySetting.sdef in Resources */, + 01D567E32AD158B600CDA0AE /* MetaPrefs.storyboard in Resources */, F9FAB31E262BE04800DE02A6 /* Images.xcassets in Resources */, 01E33AB529B5C5E400FD1006 /* menu_icon@2x.png in Resources */, 495340B020DE5F7200B0D3FF /* StatusItemView.xib in Resources */, @@ -1003,6 +1013,7 @@ 01F335E32AD10D0B0048AF77 /* AppDelegate.swift in Sources */, 01F335E42AD10D0B0048AF77 /* SpeedUtils.swift in Sources */, 01F335E52AD10D0B0048AF77 /* Logger.swift in Sources */, + 01D567E62AD158B600CDA0AE /* MetaPrefsViewController.swift in Sources */, 01F335E62AD10D0B0048AF77 /* NSView+Layout.swift in Sources */, 01F335E72AD10D0B0048AF77 /* FileEvent.swift in Sources */, 01F335E82AD10D0B0048AF77 /* AlphaMetaDownloader.swift in Sources */, @@ -1096,6 +1107,7 @@ 49CF3B2120CD7463001EBF94 /* AppDelegate.swift in Sources */, 4991D2302A564DDC00978143 /* SpeedUtils.swift in Sources */, 496BDEE021196F1E00C5207F /* Logger.swift in Sources */, + 01D567E52AD158B600CDA0AE /* MetaPrefsViewController.swift in Sources */, 4905A2CA2A20841B00AEDA2E /* NSView+Layout.swift in Sources */, 49722FEF211F338B00650A41 /* FileEvent.swift in Sources */, 016BEAB029D80103001586C5 /* AlphaMetaDownloader.swift in Sources */, diff --git a/ClashX/AppDelegate.swift b/ClashX/AppDelegate.swift index 0855da95f..a394d38ba 100644 --- a/ClashX/AppDelegate.swift +++ b/ClashX/AppDelegate.swift @@ -51,8 +51,6 @@ class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet var tunModeMenuItem: NSMenuItem! - @IBOutlet var hideUnselecableMenuItem: NSMenuItem! - @IBOutlet var useYacdDashboardMenuItem: NSMenuItem! @IBOutlet var proxyProvidersMenu: NSMenu! @IBOutlet var ruleProvidersMenu: NSMenu! @IBOutlet var proxyProvidersMenuItem: NSMenuItem! @@ -60,10 +58,6 @@ class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet var snifferMenuItem: NSMenuItem! @IBOutlet var flushFakeipCacheMenuItem: NSMenuItem! - @IBOutlet var useAlphaMetaMenuItem: NSMenuItem! - @IBOutlet var alphaMetaVersionMenuItem: NSMenuItem! - @IBOutlet var updateAlphaMetaMenuItem: NSMenuItem! - var disposeBag = DisposeBag() var statusItemView: StatusItemViewProtocol! var isSpeedTesting = false @@ -207,12 +201,6 @@ class AppDelegate: NSObject, NSApplicationDelegate { statusItemView.updateViewStatus(enableProxy: ConfigManager.shared.proxyPortAutoSet) - hideUnselecableMenuItem.state = .init(rawValue: MenuItemFactory.hideUnselectable) - - useYacdDashboardMenuItem.state = MenuItemFactory.useYacdDashboard ? .on : .off - useYacdDashboardMenuItem.isHidden = !DashboardManager.shared.enableSwiftUI - - useAlphaMetaMenuItem.state = MenuItemFactory.useAlphaCore ? .on : .off } func setupData() { @@ -490,13 +478,10 @@ class AppDelegate: NSObject, NSApplicationDelegate { } // alpha core - if let v = testMetaCore(alphaCorePath.path) { - updateAlphaVersion(v.version) - if MenuItemFactory.useAlphaCore { + if let _ = testMetaCore(alphaCorePath.path) { + if ConfigManager.useAlphaCore { return (alphaCorePath.path, nil) } - } else { - updateAlphaVersion(nil) } let fm = FileManager.default @@ -1168,31 +1153,6 @@ extension AppDelegate { } } - @IBAction func hideUnselectable(_ sender: NSMenuItem) { - var newState = NSControl.StateValue.off - switch sender.state { - case .off: - newState = .mixed - case .mixed: - newState = .on - case .on: - newState = .off - default: - return - } - - sender.state = newState - MenuItemFactory.hideUnselectable = newState.rawValue - } - - @IBAction func useYacdDashboard(_ sender: NSMenuItem) { - guard DashboardManager.shared.enableSwiftUI else { return } - - let useYacd = sender.state == .off - sender.state = useYacd ? .on : .off - MenuItemFactory.useYacdDashboard = useYacd - } - @IBAction func checkForUpdate(_ sender: NSMenuItem) { let unc = NSUserNotificationCenter.default AF.request("https://api.github.com/repos/MetaCubeX/ClashX.Meta/releases/latest").responseString { @@ -1259,64 +1219,6 @@ extension AppDelegate { sender.state = enable ? .on : .off } } - - @IBAction func useAlphaMeta(_ sender: NSMenuItem) { - if UserDefaults.standard.object(forKey: "useAlphaCore") as? Bool == nil { - let alert = NSAlert() - alert.messageText = NSLocalizedString("Alpha Meta core Warning", comment: "") - alert.alertStyle = .warning - alert.addButton(withTitle: NSLocalizedString("Continue", comment: "")) - alert.addButton(withTitle: NSLocalizedString("Cancel", comment: "")) - if alert.runModal() != .alertFirstButtonReturn { - return - } - } - - let use = sender.state != .on - MenuItemFactory.useAlphaCore = use - sender.state = use ? .on : .off - } - - @IBAction func showAlphaInFinder(_ sender: NSMenuItem) { - guard let u = Paths.alphaCorePath(), - FileManager.default.fileExists(atPath: u.path) else { return } - NSWorkspace.shared.activateFileViewerSelecting([u]) - } - - @IBAction func updateAlphaMeta(_ sender: NSMenuItem) { - sender.isEnabled = false - - AlphaMetaDownloader.alphaAsset().then { - AlphaMetaDownloader.checkVersion($0) - }.then { - AlphaMetaDownloader.downloadCore($0) - }.then { - AlphaMetaDownloader.replaceCore($0) - }.done { - self.updateAlphaVersion($0) - let msg = NSLocalizedString("Version: ", comment: "") + $0 - NSUserNotificationCenter.default.post(title: "Clash Meta Core", info: msg) - }.ensure { - sender.isEnabled = true - }.catch { - let error = $0 as? AlphaMetaDownloader.errors - NSUserNotificationCenter.default.post(title: "Clash Meta Core", info: error?.des() ?? "") - } - } - - func updateAlphaVersion(_ version: String?) { - let enable = version != nil - useAlphaMetaMenuItem.isEnabled = enable - alphaMetaVersionMenuItem.isEnabled = enable - if let v = version { - let info = NSLocalizedString("Version: ", comment: "") + v - alphaMetaVersionMenuItem.title = info - updateAlphaMetaMenuItem.title = NSLocalizedString("Update Alpha Meta core", comment: "") - } else { - alphaMetaVersionMenuItem.title = NSLocalizedString("Version: ", comment: "") + "none" - updateAlphaMetaMenuItem.title = NSLocalizedString("Download Meta core", comment: "") - } - } } // MARK: crash hanlder diff --git a/ClashX/Base.lproj/Main.storyboard b/ClashX/Base.lproj/Main.storyboard index 07e8bbe63..d64808d6e 100644 --- a/ClashX/Base.lproj/Main.storyboard +++ b/ClashX/Base.lproj/Main.storyboard @@ -1,11 +1,18 @@ - + + + + + + + + @@ -14,6 +21,7 @@ + @@ -28,6 +36,7 @@ + @@ -699,7 +708,6 @@ - @@ -709,7 +717,6 @@ - @@ -730,9 +737,6 @@ - - - @@ -918,48 +922,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2140,5 +2102,6 @@ + diff --git a/ClashX/General/ClashMetaConfig.swift b/ClashX/General/ClashMetaConfig.swift index 35c36eb9d..6b420202c 100644 --- a/ClashX/General/ClashMetaConfig.swift +++ b/ClashX/General/ClashMetaConfig.swift @@ -11,7 +11,10 @@ class ClashMetaConfig: NSObject { struct Config: Codable { var externalUI: String? = { - guard let htmlPath = Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "dashboard") else { + var subpath = "dashboard/" + subpath += ConfigManager.useYacdDashboard ? "yacd" : "xd" + + guard let htmlPath = Bundle.main.path(forResource: "index", ofType: "html", inDirectory: subpath) else { return nil } return URL(fileURLWithPath: htmlPath).deletingLastPathComponent().path diff --git a/ClashX/General/Managers/ConfigManager.swift b/ClashX/General/Managers/ConfigManager.swift index 03f88b18a..64d738f98 100644 --- a/ClashX/General/Managers/ConfigManager.swift +++ b/ClashX/General/Managers/ConfigManager.swift @@ -185,3 +185,24 @@ extension ConfigManager { } } } + +extension ConfigManager { + static var useYacdDashboard: Bool = UserDefaults.standard.object(forKey: "useYacdDashboard") as? Bool ?? false { + didSet { + UserDefaults.standard.set(useYacdDashboard, forKey: "useYacdDashboard") + } + } + + static var useSwiftUIDashboard: Bool = UserDefaults.standard.object(forKey: "useSwiftUIDashboard") as? Bool ?? false { + didSet { + UserDefaults.standard.set(useSwiftUIDashboard, forKey: "useSwiftUIDashboard") + } + } + + + static var useAlphaCore: Bool = UserDefaults.standard.object(forKey: "useAlphaCore") as? Bool ?? false { + didSet { + UserDefaults.standard.set(useAlphaCore, forKey: "useAlphaCore") + } + } +} diff --git a/ClashX/General/Managers/MenuItemFactory.swift b/ClashX/General/Managers/MenuItemFactory.swift index 51849e240..e37207353 100644 --- a/ClashX/General/Managers/MenuItemFactory.swift +++ b/ClashX/General/Managers/MenuItemFactory.swift @@ -22,18 +22,6 @@ class MenuItemFactory { } } - static var useYacdDashboard: Bool = UserDefaults.standard.object(forKey: "useYacdDashboard") as? Bool ?? false { - didSet { - UserDefaults.standard.set(useYacdDashboard, forKey: "useYacdDashboard") - DashboardManager.shared.useYacd = useYacdDashboard - } - } - - static var useAlphaCore: Bool = UserDefaults.standard.object(forKey: "useAlphaCore") as? Bool ?? false { - didSet { - UserDefaults.standard.set(useAlphaCore, forKey: "useAlphaCore") - } - } static let updateAllProvidersTitle = NSLocalizedString("Update All Providers", comment: "") diff --git a/ClashX/ViewControllers/ClashWebViewContoller.swift b/ClashX/ViewControllers/ClashWebViewContoller.swift index 664296a8a..3e134db06 100644 --- a/ClashX/ViewControllers/ClashWebViewContoller.swift +++ b/ClashX/ViewControllers/ClashWebViewContoller.swift @@ -153,9 +153,10 @@ class ClashWebViewContoller: NSViewController { var params = [String]() let cm = ConfigManager.shared - if cm.apiPort != "9090" { - params.append("port=\(cm.apiPort)") - } + + params.append("hostname=127.0.0.1") + params.append("port=\(cm.apiPort)") + if cm.apiSecret != "" { params.append("secret=\(cm.apiSecret)") } diff --git a/ClashX/ViewControllers/DashboardManager.swift b/ClashX/ViewControllers/DashboardManager.swift index 61e253080..ba20f9370 100644 --- a/ClashX/ViewControllers/DashboardManager.swift +++ b/ClashX/ViewControllers/DashboardManager.swift @@ -13,27 +13,32 @@ import ClashX_Dashboard class DashboardManager: NSObject { + static let shared = DashboardManager() override init() { } + #if SwiftUI_Version - let enableSwiftUI = true - var useYacd = MenuItemFactory.useYacdDashboard { - didSet { - if useYacd { + var useSwiftUI: Bool { + get { + return ConfigManager.useSwiftUIDashboard + } + set { + ConfigManager.useSwiftUIDashboard = newValue + + if newValue { + clashWebWindowController?.close() + } else { deinitNotifications() dashboardWindowController?.close() - } else { - clashWebWindowController?.close() } } } var dashboardWindowController: DashboardWindowController? #else - let enableSwiftUI = false - var useYacd = true + let useSwiftUI = false #endif private var disposables = [Disposable]() @@ -45,12 +50,12 @@ class DashboardManager: NSObject { #if SwiftUI_Version initNotifications() - if useYacd { - dashboardWindowController = nil - showWebWindow(sender) - } else { + if useSwiftUI { clashWebWindowController = nil showSwiftUIWindow(sender) + } else { + dashboardWindowController = nil + showWebWindow(sender) } #else showWebWindow(sender) @@ -97,7 +102,7 @@ extension DashboardManager { } func initNotifications() { - guard !useYacd, disposables.count == 0 else { return } + guard useSwiftUI, disposables.count == 0 else { return } let n1 = NotificationCenter.default.rx.notification(.configFileChange).subscribe { [weak self] _ in diff --git a/ClashX/ViewControllers/Settings/MetaPrefs.storyboard b/ClashX/ViewControllers/Settings/MetaPrefs.storyboard new file mode 100644 index 000000000..afacfa16c --- /dev/null +++ b/ClashX/ViewControllers/Settings/MetaPrefs.storyboard @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ClashX/ViewControllers/Settings/MetaPrefsViewController.swift b/ClashX/ViewControllers/Settings/MetaPrefsViewController.swift new file mode 100644 index 000000000..b4249db1c --- /dev/null +++ b/ClashX/ViewControllers/Settings/MetaPrefsViewController.swift @@ -0,0 +1,161 @@ +// +// MetaPrefsViewController.swift +// ClashX Meta +// +// Copyright © 2023 west2online. All rights reserved. +// + +import Cocoa + +class MetaPrefsViewController: NSViewController { + // Meta Setting + @IBOutlet var hideUnselectableButton: NSButton! + + @IBAction func hideUnselectable(_ sender: NSButton) { + var newState = NSControl.StateValue.off + switch sender.state { + case .off: + newState = .mixed + case .mixed: + newState = .on + case .on: + newState = .off + default: + return + } + + sender.state = newState + MenuItemFactory.hideUnselectable = newState.rawValue + } + + // Dashboard + @IBOutlet var useSwiftuiButton: NSButton! + @IBOutlet var useYacdButton: NSButton! + @IBOutlet var useXDButton: NSButton! + + @IBAction func switchDashboard(_ sender: NSButton) { + switch sender { +#if SwiftUI_Version + case useSwiftuiButton: + DashboardManager.shared.useSwiftUI = sender.state == .on +#endif + case useYacdButton: + ConfigManager.useYacdDashboard = sender.state == .on + case useXDButton: + ConfigManager.useYacdDashboard = sender.state == .off + default: + break + } + initDashboardButtons() + } + + // Alpha Core + @IBOutlet var useAlphaButton: NSButton! + @IBOutlet var alphaVersionTextField: NSTextField! + @IBOutlet var updateButton: NSButton! + @IBOutlet var updateProgressIndicator: NSProgressIndicator! + @IBOutlet var showAlphaButton: NSButton! + + + @IBAction func useAlphaMeta(_ sender: NSButton) { + if UserDefaults.standard.object(forKey: "useAlphaCore") as? Bool == nil { + let alert = NSAlert() + alert.messageText = NSLocalizedString("Alpha Meta core Warning", comment: "") + alert.alertStyle = .warning + alert.addButton(withTitle: NSLocalizedString("Continue", comment: "")) + alert.addButton(withTitle: NSLocalizedString("Cancel", comment: "")) + if alert.runModal() != .alertFirstButtonReturn { + return + } + } + + let use = sender.state == .on + ConfigManager.useAlphaCore = use + } + + @IBAction func updateAlpha(_ sender: NSButton) { + sender.isEnabled = false + updateProgressIndicator.isHidden = false + updateProgressIndicator.startAnimation(nil) + AlphaMetaDownloader.alphaAsset().then { + AlphaMetaDownloader.checkVersion($0) + }.then { + AlphaMetaDownloader.downloadCore($0) + }.then { + AlphaMetaDownloader.replaceCore($0) + }.done { + self.updateAlphaVersion($0) + let msg = NSLocalizedString("Version: ", comment: "") + $0 + NSUserNotificationCenter.default.post(title: "Clash Meta Core", info: msg) + }.ensure { + sender.isEnabled = true + self.updateProgressIndicator.isHidden = true + self.updateProgressIndicator.stopAnimation(nil) + }.catch { + let error = $0 as? AlphaMetaDownloader.errors + NSUserNotificationCenter.default.post(title: "Clash Meta Core", info: error?.des() ?? "") + } + } + + @IBAction func showAlphaInFinder(_ sender: NSButton) { + guard let u = Paths.alphaCorePath(), + FileManager.default.fileExists(atPath: u.path) else { return } + NSWorkspace.shared.activateFileViewerSelecting([u]) + } + + + override func viewDidLoad() { + super.viewDidLoad() + // Meta Setting + hideUnselectableButton.state = .init(rawValue: MenuItemFactory.hideUnselectable) + + // Dashboard + initDashboardButtons() + + // Alpha Core + useAlphaButton.state = ConfigManager.useAlphaCore ? .on : .off + updateProgressIndicator.isHidden = true + setAlphaVersion() + } + + func initDashboardButtons() { + let useSwiftUI = DashboardManager.shared.useSwiftUI + let useYacd = ConfigManager.useYacdDashboard + + useSwiftuiButton.state = useSwiftUI ? .on : .off + useYacdButton.state = useYacd ? .on : .off + useXDButton.state = useYacd ? .off : .on + +#if SwiftUI_Version + useSwiftuiButton.isEnabled = true +#else + useSwiftuiButton.isEnabled = false +#endif + useYacdButton.isEnabled = !useSwiftUI + useXDButton.isEnabled = !useSwiftUI + } + + func setAlphaVersion() { + if let alphaCorePath = Paths.alphaCorePath(), + let delegate = NSApplication.shared.delegate as? AppDelegate, + let v = delegate.testMetaCore(alphaCorePath.path)?.version { + updateAlphaVersion(v) + } else { + updateAlphaVersion(nil) + } + } + + func updateAlphaVersion(_ version: String?) { + let enable = version != nil + useAlphaButton.isEnabled = enable + showAlphaButton.isEnabled = enable + if let v = version { + alphaVersionTextField.stringValue = v + updateButton.title = NSLocalizedString("Update Alpha Meta core", comment: "") + } else { + alphaVersionTextField.stringValue = "none" + updateButton.title = NSLocalizedString("Download Meta core", comment: "") + } + } + +} diff --git a/install_dependency.sh b/install_dependency.sh index a43854e9e..438d3a04e 100755 --- a/install_dependency.sh +++ b/install_dependency.sh @@ -36,8 +36,16 @@ echo "install geoip" curl -LO https://github.com/MetaCubeX/meta-rules-dat/raw/release/geoip.dat gzip geoip.dat mv geoip.dat.gz ./ClashX/Resources/geoip.dat.gz -echo "install dashboard" + + +echo "install yacd dashboard" cd ClashX/Resources -git clone -b gh-pages https://github.com/MetaCubeX/yacd.git dashboard -cd dashboard +git clone -b gh-pages https://github.com/MetaCubeX/yacd.git dashboard/yacd +cd dashboard/yacd rm -rf *.webmanifest *.js CNAME .git +cd ../../ + +echo "install XD dashboard" +git clone -b gh-pages https://github.com/metacubex/metacubexd.git dashboard/xd +cd dashboard/xd +rm -rf *.webmanifest CNAME .git \ No newline at end of file From df1ff5049fd0364817fdf1b0894b338f0867e34b Mon Sep 17 00:00:00 2001 From: mrFq1 <1xxbx0il0@mozmail.com> Date: Sun, 8 Oct 2023 15:57:14 +0800 Subject: [PATCH 6/6] misc: restart tips --- .../Settings/MetaPrefs.storyboard | 75 +++++++++++++++---- 1 file changed, 62 insertions(+), 13 deletions(-) diff --git a/ClashX/ViewControllers/Settings/MetaPrefs.storyboard b/ClashX/ViewControllers/Settings/MetaPrefs.storyboard index afacfa16c..8f4a8477f 100644 --- a/ClashX/ViewControllers/Settings/MetaPrefs.storyboard +++ b/ClashX/ViewControllers/Settings/MetaPrefs.storyboard @@ -170,8 +170,20 @@ + + + - + - @@ -240,12 +240,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +