import Foundation @objc(RecordCommand) class RecordCommand: NSScriptCommand { override func performDefaultImplementation() -> Any? { let args = self.directParameter as? [String: Any] ?? [:] // Here you can extract the parameters from the args dictionary and configure your settings let x = args["x"] as? Int let y = args["y"] as? Int let width = args["width"] as? Int let height = args["height"] as? Int let preventResize = args["prevent_resize"] as? Bool let preventMove = args["prevent_move"] as? Bool let fps = args["fps"] as? Int let outputs = OutputFormatSetting(args["outputs"] as? String ?? "") let backend = URL(string: args["backend"] as? String ?? "") let backendOutput = OutputFormatSetting(args["backend_output"] as? String ?? "") let keepLocalFiles = args["keep_local_files"] as? Bool let autoStart = args["auto_start"] as? Bool let maxLength = args["max_length"] as? Int var skipBackend = false if let backendString = args["backend"] as? String { if backendString == "" { skipBackend = true } } let config = RecordAction( action: "record", x: x, y: y, width: width, height: height, preventResize: preventResize, preventMove: preventMove, fps: fps, outputs: outputs, backend: backend, backendOutput: backendOutput, keepLocalFiles: keepLocalFiles, autoStart: autoStart, skipBackend: skipBackend, maxLength: maxLength ) NotificationCenter.default.post(name: .setCaptureSessionConfiguration, object: nil, userInfo: [ "config": config ]) NotificationCenter.default.post(name: .startAreaSelection, object: nil, userInfo: nil) // Return a result if needed return nil } }