aerospace fork
Something went wrong. Try again.
Swift
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546import Common
struct MoveNodeToWorkspaceCommand: Command { let args: MoveNodeToWorkspaceCmdArgs /*conforms*/ let shouldResetClosedWindowsCache: Bool = true
func run(_ env: CmdEnv, _ io: CmdIo) -> BinaryExitCode { guard let target = args.resolveTargetOrReportError(env, io) else { return .fail } guard let window = target.windowOrNil else { return .fail(io.err(noWindowIsFocused)) } let subjectWs = window.nodeWorkspace let targetWorkspace: Workspace switch args.target.val { case .relative(let nextPrev): guard let subjectWs else { return .fail(io.err("Window \(window.windowId) doesn't belong to any workspace")) } let ws = getNextPrevWorkspace( current: subjectWs, isNext: nextPrev == .next, wrapAround: args.wrapAround, stdin: args.useStdin ? io.readStdin() : nil, target: target, ) guard let ws = ws.getOrNil(appendErrorTo: &io.stderr) else { return .fail } targetWorkspace = ws case .direct(let name): targetWorkspace = Workspace.get(byName: name.raw) } return moveWindowToWorkspace(window, targetWorkspace, io, focusFollowsWindow: args.focusFollowsWindow, failIfNoop: args.failIfNoop) }}
@MainActorfunc moveWindowToWorkspace(_ window: Window, _ targetWorkspace: Workspace, _ io: CmdIo, focusFollowsWindow: Bool, failIfNoop: Bool, index: Int = INDEX_BIND_LAST) -> BinaryExitCode { if window.nodeWorkspace == targetWorkspace { return switch failIfNoop { case true: .fail case false: .succ(io.err("Window '\(window.windowId)' already belongs to workspace '\(targetWorkspace.name)'. Tip: use --fail-if-noop to exit with non-zero code")) } } let targetContainer: NonLeafTreeNodeObject = window.isFloating ? targetWorkspace.floatingWindowsContainer : targetWorkspace.rootTilingContainer window.bind(to: targetContainer, adaptiveWeight: WEIGHT_AUTO, index: index) return .from(bool: focusFollowsWindow ? window.focusWindow() : true)}