macOS 13 Ventura:如何通过代码检查与控制Stage Manager状态
在macOS 13 Ventura中通过代码操作Stage Manager
一、检查Stage Manager是否启用
终端命令方式
直接执行以下命令,返回1表示已启用,0表示未启用:
defaults read com.apple.WindowManager StageManagerEnabled
Swift代码方式
读取系统偏好设置判断状态:
import Foundation func isStageManagerEnabled() -> Bool { let defaults = UserDefaults(suiteName: "com.apple.WindowManager") return defaults?.bool(forKey: "StageManagerEnabled") ?? false } // 使用示例 print(isStageManagerEnabled())
Objective-C代码方式
#import <Foundation/Foundation.h> BOOL isStageManagerEnabled() { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults addSuiteNamed:@"com.apple.WindowManager"]; return [defaults boolForKey:@"StageManagerEnabled"]; } // 使用示例 NSLog(@"%d", isStageManagerEnabled());
二、开启/关闭Stage Manager
终端命令方式
- 开启Stage Manager:
defaults write com.apple.WindowManager StageManagerEnabled -bool true && killall WindowManager
- 关闭Stage Manager:
defaults write com.apple.WindowManager StageManagerEnabled -bool false && killall WindowManager
注:执行
killall WindowManager是为了让配置立即生效,无需重启系统。
Swift代码方式
import Foundation func setStageManagerEnabled(_ enabled: Bool) { let defaults = UserDefaults(suiteName: "com.apple.WindowManager") defaults?.set(enabled, forKey: "StageManagerEnabled") defaults?.synchronize() // 重启WindowManager进程使配置生效 let task = Process() task.executableURL = URL(fileURLWithPath: "/usr/bin/killall") task.arguments = ["WindowManager"] do { try task.run() task.waitUntilExit() } catch { print("Failed to restart WindowManager: \(error)") } } // 使用示例 setStageManagerEnabled(true) // 开启 setStageManagerEnabled(false) // 关闭
Objective-C代码方式
#import <Foundation/Foundation.h> void setStageManagerEnabled(BOOL enabled) { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults addSuiteNamed:@"com.apple.WindowManager"]; [defaults setBool:enabled forKey:@"StageManagerEnabled"]; [defaults synchronize]; // 重启WindowManager进程 NSTask *task = [[NSTask alloc] init]; [task setLaunchPath:@"/usr/bin/killall"]; [task setArguments:@[@"WindowManager"]]; [task launch]; [task waitUntilExit]; } // 使用示例 setStageManagerEnabled(YES); // 开启 setStageManagerEnabled(NO); // 关闭
注意:操作需要应用具备辅助功能权限或管理员身份,否则可能无法修改配置或重启进程。
内容的提问来源于stack exchange,提问作者EggsBlue
相关产品推荐
相关产品推荐

