add support for shortcuts

This commit is contained in:
hbsgithub 2023-05-26 10:13:09 +08:00
parent 5978a355a2
commit 3b1b5d16c7
6 changed files with 73 additions and 19 deletions

View File

@ -22,6 +22,7 @@
01E33AB229B5BF4200FD1006 /* NSColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01E33AB129B5BF4200FD1006 /* NSColor+Extension.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 */; }; 01E33AB529B5C5E400FD1006 /* menu_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */; };
185CBAEDFE986E6E1B836359 /* libPods-ClashX Meta.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA63125BBF03DC1A291D3351 /* libPods-ClashX Meta.a */; }; 185CBAEDFE986E6E1B836359 /* libPods-ClashX Meta.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA63125BBF03DC1A291D3351 /* libPods-ClashX Meta.a */; };
27F9A6282A1FB25500C50C38 /* TunModeSettingCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F9A6272A1FB25500C50C38 /* TunModeSettingCommand.swift */; };
4908087B29F8F405007A4944 /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4908087A29F8F3FF007A4944 /* libresolv.tbd */; }; 4908087B29F8F405007A4944 /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4908087A29F8F3FF007A4944 /* libresolv.tbd */; };
4913C82321157D0200F6B87C /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4913C82221157D0200F6B87C /* Notification.swift */; }; 4913C82321157D0200F6B87C /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4913C82221157D0200F6B87C /* Notification.swift */; };
491E6203258A424D00313AEF /* CommonUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 491E61FD258A424500313AEF /* CommonUtils.m */; }; 491E6203258A424D00313AEF /* CommonUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 491E61FD258A424500313AEF /* CommonUtils.m */; };
@ -156,6 +157,7 @@
01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = com.metacubex.ClashX.ProxyConfigHelper.meta.gz; sourceTree = "<group>"; }; 01C1462928962E4E00346AF3 /* com.metacubex.ClashX.ProxyConfigHelper.meta.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = com.metacubex.ClashX.ProxyConfigHelper.meta.gz; sourceTree = "<group>"; };
01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSColor+Extension.swift"; sourceTree = "<group>"; }; 01E33AB129B5BF4200FD1006 /* NSColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSColor+Extension.swift"; sourceTree = "<group>"; };
01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon@2x.png"; sourceTree = "<group>"; }; 01E33AB429B5C5E300FD1006 /* menu_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon@2x.png"; sourceTree = "<group>"; };
27F9A6272A1FB25500C50C38 /* TunModeSettingCommand.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TunModeSettingCommand.swift; sourceTree = "<group>"; };
3F86DA2DA3CC14731BE1ABF7 /* Pods-ClashX Meta.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ClashX Meta.release.xcconfig"; path = "Pods/Target Support Files/Pods-ClashX Meta/Pods-ClashX Meta.release.xcconfig"; sourceTree = "<group>"; }; 3F86DA2DA3CC14731BE1ABF7 /* Pods-ClashX Meta.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ClashX Meta.release.xcconfig"; path = "Pods/Target Support Files/Pods-ClashX Meta/Pods-ClashX Meta.release.xcconfig"; sourceTree = "<group>"; };
4908087A29F8F3FF007A4944 /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = usr/lib/libresolv.tbd; sourceTree = SDKROOT; }; 4908087A29F8F3FF007A4944 /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = usr/lib/libresolv.tbd; sourceTree = SDKROOT; };
4913C82221157D0200F6B87C /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = "<group>"; }; 4913C82221157D0200F6B87C /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = "<group>"; };
@ -539,6 +541,7 @@
children = ( children = (
8A2BBEA627A03ACB0081EBEF /* ProxySetting.sdef */, 8A2BBEA627A03ACB0081EBEF /* ProxySetting.sdef */,
8ACD21BA27A04C7800BC4632 /* ProxySettingCommand.swift */, 8ACD21BA27A04C7800BC4632 /* ProxySettingCommand.swift */,
27F9A6272A1FB25500C50C38 /* TunModeSettingCommand.swift */,
8ACD21BC27A04ED500BC4632 /* ProxyModeChangeCommand.swift */, 8ACD21BC27A04ED500BC4632 /* ProxyModeChangeCommand.swift */,
); );
path = AppleScript; path = AppleScript;
@ -629,8 +632,9 @@
49CF3B1520CD7463001EBF94 /* Project object */ = { 49CF3B1520CD7463001EBF94 /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
BuildIndependentTargetsInParallel = YES;
LastSwiftUpdateCheck = 1030; LastSwiftUpdateCheck = 1030;
LastUpgradeCheck = 1020; LastUpgradeCheck = 1430;
ORGANIZATIONNAME = west2online; ORGANIZATIONNAME = west2online;
TargetAttributes = { TargetAttributes = {
49CF3B1C20CD7463001EBF94 = { 49CF3B1C20CD7463001EBF94 = {
@ -759,6 +763,7 @@
49722FEF211F338B00650A41 /* FileEvent.swift in Sources */, 49722FEF211F338B00650A41 /* FileEvent.swift in Sources */,
016BEAB029D80103001586C5 /* AlphaMetaDownloader.swift in Sources */, 016BEAB029D80103001586C5 /* AlphaMetaDownloader.swift in Sources */,
49D176A72355FE680093DD7B /* NetworkChangeNotifier.swift in Sources */, 49D176A72355FE680093DD7B /* NetworkChangeNotifier.swift in Sources */,
27F9A6282A1FB25500C50C38 /* TunModeSettingCommand.swift in Sources */,
4913C82321157D0200F6B87C /* Notification.swift in Sources */, 4913C82321157D0200F6B87C /* Notification.swift in Sources */,
015F1E91288E42A50052B20A /* ClashMetaConfig.swift in Sources */, 015F1E91288E42A50052B20A /* ClashMetaConfig.swift in Sources */,
8ACD21BD27A04ED500BC4632 /* ProxyModeChangeCommand.swift in Sources */, 8ACD21BD27A04ED500BC4632 /* ProxyModeChangeCommand.swift in Sources */,
@ -888,6 +893,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -896,6 +902,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "Mac Developer"; CODE_SIGN_IDENTITY = "Mac Developer";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
@ -949,6 +956,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -957,6 +965,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "Mac Developer"; CODE_SIGN_IDENTITY = "Mac Developer";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
@ -986,9 +995,11 @@
CODE_SIGN_ENTITLEMENTS = ClashX/ClashX.entitlements; CODE_SIGN_ENTITLEMENTS = ClashX/ClashX.entitlements;
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COMPRESS_PNG_FILES = YES; COMPRESS_PNG_FILES = YES;
CURRENT_PROJECT_VERSION = 0; CURRENT_PROJECT_VERSION = 0;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
@ -1008,12 +1019,11 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/ClashX", "$(PROJECT_DIR)/ClashX",
); );
MACOSX_DEPLOYMENT_TARGET = 10.13; MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
MARKETING_VERSION = v1.0; MARKETING_VERSION = v1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.meta; PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.meta;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
STRIP_INSTALLED_PRODUCT = NO;
STRIP_PNG_TEXT = YES; STRIP_PNG_TEXT = YES;
SWIFT_OBJC_BRIDGING_HEADER = "ClashX/ClashX-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "ClashX/ClashX-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@ -1031,10 +1041,12 @@
CODE_SIGN_ENTITLEMENTS = ClashX/ClashX.entitlements; CODE_SIGN_ENTITLEMENTS = ClashX/ClashX.entitlements;
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COMPRESS_PNG_FILES = YES; COMPRESS_PNG_FILES = YES;
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = 0; CURRENT_PROJECT_VERSION = 0;
DEAD_CODE_STRIPPING = YES;
DEPLOYMENT_POSTPROCESSING = YES; DEPLOYMENT_POSTPROCESSING = YES;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
@ -1055,13 +1067,12 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/ClashX", "$(PROJECT_DIR)/ClashX",
); );
MACOSX_DEPLOYMENT_TARGET = 10.13; MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
MARKETING_VERSION = v1.0; MARKETING_VERSION = v1.0;
OTHER_CODE_SIGN_FLAGS = "--timestamp"; OTHER_CODE_SIGN_FLAGS = "--timestamp";
PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.meta; PRODUCT_BUNDLE_IDENTIFIER = com.metacubex.ClashX.meta;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
STRIP_INSTALLED_PRODUCT = YES;
STRIP_PNG_TEXT = YES; STRIP_PNG_TEXT = YES;
SWIFT_OBJC_BRIDGING_HEADER = "ClashX/ClashX-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "ClashX/ClashX-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@ -1077,6 +1088,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 3; CURRENT_PROJECT_VERSION = 3;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
INFOPLIST_FILE = "$(SRCROOT)/ProxyConfigHelper/Helper-Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/ProxyConfigHelper/Helper-Info.plist";
@ -1086,7 +1098,7 @@
"@loader_path/../Frameworks", "@loader_path/../Frameworks",
); );
LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_SEARCH_PATHS = "$(inherited)";
MACOSX_DEPLOYMENT_TARGET = 10.13; MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
MARKETING_VERSION = 1.2; MARKETING_VERSION = 1.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
@ -1119,6 +1131,7 @@
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 3; CURRENT_PROJECT_VERSION = 3;
DEAD_CODE_STRIPPING = YES;
DEPLOYMENT_POSTPROCESSING = YES; DEPLOYMENT_POSTPROCESSING = YES;
DEVELOPMENT_TEAM = ""; DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
@ -1129,7 +1142,7 @@
"@loader_path/../Frameworks", "@loader_path/../Frameworks",
); );
LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_SEARCH_PATHS = "$(inherited)";
MACOSX_DEPLOYMENT_TARGET = 10.13; MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)";
MARKETING_VERSION = 1.2; MARKETING_VERSION = 1.2;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (

View File

@ -1,6 +1,6 @@
// //
// ProxyModeChangeCommand.swift // ProxyModeChangeCommand.swift
// ClashX // ClashX.Meta
// //
// Created by Vince-hz on 2022/1/25. // Created by Vince-hz on 2022/1/25.
// Copyright © 2022 west2online. All rights reserved. // Copyright © 2022 west2online. All rights reserved.

View File

@ -3,10 +3,13 @@
<dictionary xmlns:xi="http://www.w3.org/2003/XInclude" title="ClashX Terminonoly"> <dictionary xmlns:xi="http://www.w3.org/2003/XInclude" title="ClashX Terminonoly">
<suite name="Proxy Suite" code="????" description="Proxy setting for AppleScript."> <suite name="Proxy Suite" code="????" description="Proxy setting for AppleScript.">
<command name="toggleProxy" code="clashtog" description="Toggle the system proxy."> <command name="toggleProxy" code="clashtog" description="Toggle the system proxy.">
<cocoa class="ClashX.ProxySettingCommand"/> <cocoa class="ClashX_Meta.ProxySettingCommand"/>
</command>
<command name="TunMode" code="clashtun" description="Toggle the Tun mode.">
<cocoa class="ClashX_Meta.TunModeSettingCommand"/>
</command> </command>
<command name="proxyMode" code="clashmod" description="Update proxy mode."> <command name="proxyMode" code="clashmod" description="Update proxy mode.">
<cocoa class="ClashX.ProxyModeChangeCommand"/> <cocoa class="ClashX_Meta.ProxyModeChangeCommand"/>
<direct-parameter description="The proxy mode to set. direct, global, or rule"> <direct-parameter description="The proxy mode to set. direct, global, or rule">
<type type="text"/> <type type="text"/>
</direct-parameter> </direct-parameter>

View File

@ -1,6 +1,6 @@
// //
// ProxySettingCommand.swift // ProxySettingCommand.swift
// ClashXX // ClashX.Meta
// //
// Created by Vince-hz on 2022/1/25. // Created by Vince-hz on 2022/1/25.
// Copyright © 2022 west2online. All rights reserved. // Copyright © 2022 west2online. All rights reserved.

View File

@ -0,0 +1,29 @@
//
// TunModeSettingCommand.swift
// ClashX.Meta
//
// Created by hbsgithub on 2023/5/26.
// Copyright © 2023 west2online. All rights reserved.
//
import Foundation
import AppKit
@objc class TunModeSettingCommand: NSScriptCommand {
override func performDefaultImplementation() -> Any? {
guard let delegate = NSApplication.shared.delegate as? AppDelegate else {
scriptErrorNumber = -2
scriptErrorString = "can't get application, try again later"
return nil
}
let menuItem: NSMenuItem
menuItem = delegate.tunModeMenuItem
if menuItem.state == .on {
menuItem.state = .on
} else {
menuItem.state = .off
}
delegate.tunMode(menuItem)
return nil
}
}

View File

@ -1,42 +1,51 @@
# 全局快捷键 # 全局快捷键
ClashX的全局快捷键是通过支持 AppleScript并以系统的 Automator 程序调用 AppleScript 来完成全局快捷键的实现。 ClashX Meta的全局快捷键是通过支持 AppleScript并以系统的 Automator 程序或者Alfred Workflow调用 AppleScript 来完成全局快捷键的实现。
ClashX目前仅支持以下功能的AppleScript ClashX Meta目前仅支持以下功能的AppleScript
1. 打开(关闭)系统代理 1. 打开(关闭)系统代理
2. 切换出站模式 2. 切换出站模式
3. 打开关闭Tun模式
## 通过 Automator 创建全局快捷键 ## 通过 Automator 创建全局快捷键
[Mac新建全局快捷键](https://www.jianshu.com/p/afee9aeb41a8) [Mac新建全局快捷键](https://www.jianshu.com/p/afee9aeb41a8)
## 使用Alfred Workflow
[Alfred-Workflow-for-ClashX-Meta](https://github.com/hbsgithub/Alfred-Workflow-for-ClashX-Meta)
## 可用的 AppleScript ## 可用的 AppleScript
你可以在这里选择你需要的 AppleScript 代码,以此创建你需要的快捷键。 你可以在这里选择你需要的 AppleScript 代码,以此创建你需要的快捷键。
**以下示例代码为ClashX程序。如果你正在用ClashX Pro那么请将ClashX替换为 ClashX Pro** **以下示例代码为ClashX Meta程序。如果你正在用ClashX或ClashX Pro那么请将ClashX Meta替换为 ClashX或ClashX Pro**
--- ---
打开(关闭)系统代理 打开(关闭)系统代理
`tell application "ClashX" to toggleProxy` `tell application "ClashX Meta" to toggleProxy`
切换出站模式为全局代理 切换出站模式为全局代理
`tell application "ClashX" to proxyMode 'global'` `tell application "ClashX Meta" to proxyMode 'global'`
切换出站模式为直连 切换出站模式为直连
`tell application "ClashX" to proxyMode 'direct'` `tell application "ClashX Meta" to proxyMode 'direct'`
切换出站模式为规则代理 切换出站模式为规则代理
`tell application "ClashX" to proxyMode 'rule'` `tell application "ClashX Meta" to proxyMode 'rule'`
打开关闭Tun模式
`tell application "ClashX Meta" to TunMode`
## 已知缺陷 ## 已知缺陷
1. 无法直接在桌面使用快捷键,你需要进入任意程序中才能启动快捷键 1. 通过 Automator 创建全局快捷键的方式无法直接在桌面使用快捷键,你需要进入任意程序中才能启动快捷键
2. 在任何程序中第一次启用该快捷键都要点击一次确认授权才能启动快捷键 2. 在任何程序中第一次启用该快捷键都要点击一次确认授权才能启动快捷键