import AppKit import Common struct ListMonitorsCommand: Command { let args: ListMonitorsCmdArgs /*conforms*/ let shouldResetClosedWindowsCache = false func run(_ env: CmdEnv, _ io: CmdIo) -> BinaryExitCode { let focus = focus var result = sortedMonitorInfos if let focused = args.focused { result = result.filter { (monitor) in (monitor.activeWorkspace == focus.workspace) == focused } } if let mouse = args.mouse { let mouseWorkspace = mouseLocation.monitorApproximation.activeWorkspace result = result.filter { (monitor) in (monitor.activeWorkspace == mouseWorkspace) == mouse } } lazy var list = result.map(AeroObj.monitor) return switch true { case args.outputOnlyCount: .succ(io.out("\(result.count)")) case args.json: switch list.formatToJson(args.format, ignoreRightPaddingVar: args._format.isEmpty) { case .success(let json): .succ(io.out(json)) case .failure(let msg): .fail(io.err(msg)) } default: switch list.format(args.format) { case .success(let lines): .succ(io.out(lines)) case .failure(let msg): .fail(io.err(msg.map(\.description).joinErrors())) } } } }