nikitabobko / AeroSpace

AeroSpace is an i3-like tiling window manager for macOS
https://nikitabobko.github.io/AeroSpace/guide
MIT License
7.12k stars 114 forks source link

Wrong windows gets focused when dealing with multiple windows of the same application #591

Closed shoplab7 closed 3 weeks ago

shoplab7 commented 3 weeks ago

I have 3 displays. When I have 2 windows of the same app on 2 of them and try to use focus-monitor next/prev, wrong window gets focus. For example, I have 1 - browser 2 - vscode 3 - vscode (1, 2, 3 are displays) I start from display1, use "focus-monitor --wrap-around next" 3 times and get back to the display1. (all focus commands work completely fine) then try to use "focus-monitor --wrap-around prev" once. display3 gets focused for a split of a second, and then focus switches to display2 instead of just focusing on display3.

debug-windows ``` com.googlecode.iterm2.window.440 windowId: 440 com.googlecode.iterm2.window.440 workspace: 2 com.googlecode.iterm2.window.440 treeNodeParent: Workspace(name: '2', isVisible: 'true', isEffectivelyEmpty: 'false', doKeepAlive: 'true') com.googlecode.iterm2.window.440 recognizedAsDialog: true com.googlecode.iterm2 AXRole: Optional(AXApplication) com.googlecode.iterm2 AXTitle: Optional(iTerm2) com.googlecode.iterm2 AXFunctionRowTopLevelElements: [ com.googlecode.iterm2 ] com.googlecode.iterm2 AXFrame: nil com.googlecode.iterm2 AXFocusedUIElement: AXUIElement(windowId=440, title=nil, role="AXTextArea", subrole=nil) com.googlecode.iterm2 AXFrontmost: Optional(1) com.googlecode.iterm2 AXExtrasMenuBar: nil com.googlecode.iterm2 AXMainWindow: AXUIElement(windowId=440, title="iTerm2 Hotkey Window", role="AXWindow", subrole="AXStandardWindow") com.googlecode.iterm2 AXFocusedWindow: AXUIElement(windowId=440, title="iTerm2 Hotkey Window", role="AXWindow", subrole="AXStandardWindow") com.googlecode.iterm2 AXMenuBar: Optional( {pid=739}) com.googlecode.iterm2 AXWindows: [ com.googlecode.iterm2 AXUIElement(windowId=440, title="iTerm2 Hotkey Window", role="AXWindow", subrole="AXStandardWindow") com.googlecode.iterm2 ] com.googlecode.iterm2 AXSize: nil com.googlecode.iterm2 AXPosition: nil com.googlecode.iterm2 Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden company.thebrowser.Browser.window.24522 windowId: 24522 company.thebrowser.Browser.window.24522 workspace: 1 company.thebrowser.Browser.window.24522 treeNodeParent: AppBundle.TilingContainer company.thebrowser.Browser.window.24522 recognizedAsDialog: false company.thebrowser.Browser.window.24522 AXTitle: Optional(New Issue · nikitabobko/AeroSpace) company.thebrowser.Browser.window.24522 AXRole: Optional(AXWindow) company.thebrowser.Browser.window.24522 AXSubrole: Optional(AXStandardWindow) company.thebrowser.Browser.window.24522 AXIdentifier: Optional(bigBrowserWindow-2941407C-B40C-4BEE-B9E8-B44C4D41230D) company.thebrowser.Browser.window.24522 AXFocused: Optional(0) company.thebrowser.Browser.window.24522 AXFullScreen: Optional(0) company.thebrowser.Browser.window.24522 AXFrame: Optional( {value = x:-1053.000000 y:-1055.000000 w:1920.000000 h:1054.000000 type = kAXValueCGRectType}) company.thebrowser.Browser.window.24522 AXPosition: Optional( {value = x:-1053.000000 y:-1055.000000 type = kAXValueCGPointType}) company.thebrowser.Browser.window.24522 AXGrowArea: nil company.thebrowser.Browser.window.24522 AXMinimizeButton: AXUIElement { company.thebrowser.Browser.window.24522 AXRole: Optional(AXButton) company.thebrowser.Browser.window.24522 AXTitle: nil company.thebrowser.Browser.window.24522 AXSubrole: Optional(AXMinimizeButton) company.thebrowser.Browser.window.24522 AXEnabled: Optional(1) company.thebrowser.Browser.window.24522 AXParent: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 AXTopLevelUIElement: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 AXWindow: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription company.thebrowser.Browser.window.24522 } company.thebrowser.Browser.window.24522 AXDocument: nil company.thebrowser.Browser.window.24522 AXSections: [ company.thebrowser.Browser.window.24522 Optional({ company.thebrowser.Browser.window.24522 SectionDescription = Content; company.thebrowser.Browser.window.24522 SectionObject = " {pid=42582}"; company.thebrowser.Browser.window.24522 SectionUniqueID = AXContent; company.thebrowser.Browser.window.24522 }), company.thebrowser.Browser.window.24522 Optional({ company.thebrowser.Browser.window.24522 SectionDescription = "Top Level Navigator"; company.thebrowser.Browser.window.24522 SectionObject = " {pid=42582}"; company.thebrowser.Browser.window.24522 SectionUniqueID = AXTopLevelNavigator; company.thebrowser.Browser.window.24522 }), company.thebrowser.Browser.window.24522 Optional({ company.thebrowser.Browser.window.24522 SectionObject = " {pid=42582}"; company.thebrowser.Browser.window.24522 SectionUniqueID = AXContainer; company.thebrowser.Browser.window.24522 }), company.thebrowser.Browser.window.24522 Optional({ company.thebrowser.Browser.window.24522 SectionObject = " {pid=42582}"; company.thebrowser.Browser.window.24522 SectionUniqueID = AXContainer; company.thebrowser.Browser.window.24522 }), company.thebrowser.Browser.window.24522 Optional({ company.thebrowser.Browser.window.24522 SectionDescription = "Content Navigator"; company.thebrowser.Browser.window.24522 SectionObject = " {pid=42582}"; company.thebrowser.Browser.window.24522 SectionUniqueID = AXContentNavigator; company.thebrowser.Browser.window.24522 }) company.thebrowser.Browser.window.24522 ] company.thebrowser.Browser.window.24522 AXCloseButton: AXUIElement { company.thebrowser.Browser.window.24522 AXRole: Optional(AXButton) company.thebrowser.Browser.window.24522 AXTitle: nil company.thebrowser.Browser.window.24522 AXSubrole: Optional(AXCloseButton) company.thebrowser.Browser.window.24522 AXEnabled: Optional(1) company.thebrowser.Browser.window.24522 AXParent: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 AXTopLevelUIElement: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 AXWindow: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited company.thebrowser.Browser.window.24522 } company.thebrowser.Browser.window.24522 AXMain: Optional(1) company.thebrowser.Browser.window.24522 AXActivationPoint: Optional( {value = x:-1043.000000 y:-1041.000000 type = kAXValueCGPointType}) company.thebrowser.Browser.window.24522 AXFullScreenButton: AXUIElement { company.thebrowser.Browser.window.24522 AXRole: Optional(AXButton) company.thebrowser.Browser.window.24522 AXTitle: nil company.thebrowser.Browser.window.24522 AXSubrole: Optional(AXFullScreenButton) company.thebrowser.Browser.window.24522 AXEnabled: Optional(1) company.thebrowser.Browser.window.24522 AXParent: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 AXTopLevelUIElement: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 AXWindow: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription company.thebrowser.Browser.window.24522 } company.thebrowser.Browser.window.24522 AXProxy: nil company.thebrowser.Browser.window.24522 AXDefaultButton: nil company.thebrowser.Browser.window.24522 AXMinimized: Optional(0) company.thebrowser.Browser.window.24522 AXParent: Optional( {pid=42582}) company.thebrowser.Browser.window.24522 AXTitleUIElement: nil company.thebrowser.Browser.window.24522 AXCancelButton: nil company.thebrowser.Browser.window.24522 AXModal: Optional(0) company.thebrowser.Browser.window.24522 AXZoomButton: AXUIElement { company.thebrowser.Browser.window.24522 AXRole: Optional(AXButton) company.thebrowser.Browser.window.24522 AXTitle: nil company.thebrowser.Browser.window.24522 AXSubrole: Optional(AXFullScreenButton) company.thebrowser.Browser.window.24522 AXEnabled: Optional(1) company.thebrowser.Browser.window.24522 AXParent: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 AXTopLevelUIElement: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 AXWindow: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser.window.24522 Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription company.thebrowser.Browser.window.24522 } company.thebrowser.Browser.window.24522 AXSize: Optional( {value = w:1920.000000 h:1054.000000 type = kAXValueCGSizeType}) company.thebrowser.Browser.window.24522 AXToolbarButton: nil company.thebrowser.Browser.window.24522 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription company.thebrowser.Browser AXRole: Optional(AXApplication) company.thebrowser.Browser AXTitle: Optional(Arc) company.thebrowser.Browser AXFunctionRowTopLevelElements: [ company.thebrowser.Browser ] company.thebrowser.Browser AXFrame: nil company.thebrowser.Browser AXFocusedUIElement: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWebArea", subrole=nil) company.thebrowser.Browser AXFrontmost: Optional(1) company.thebrowser.Browser AXExtrasMenuBar: nil company.thebrowser.Browser AXMainWindow: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser AXFocusedWindow: AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser AXMenuBar: Optional( {pid=42582}) company.thebrowser.Browser AXWindows: [ company.thebrowser.Browser AXUIElement(windowId=24522, title="New Issue · nikitabobko/AeroSpace", role="AXWindow", subrole="AXStandardWindow") company.thebrowser.Browser ] company.thebrowser.Browser AXSize: nil company.thebrowser.Browser AXPosition: nil company.thebrowser.Browser Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden com.microsoft.VSCode.window.24716 windowId: 24716 com.microsoft.VSCode.window.24716 workspace: 2 com.microsoft.VSCode.window.24716 treeNodeParent: AppBundle.TilingContainer com.microsoft.VSCode.window.24716 recognizedAsDialog: false com.microsoft.VSCode.window.24716 AXTitle: Optional(.aerospace.toml) com.microsoft.VSCode.window.24716 AXRole: Optional(AXWindow) com.microsoft.VSCode.window.24716 AXSubrole: Optional(AXStandardWindow) com.microsoft.VSCode.window.24716 AXFocused: Optional(0) com.microsoft.VSCode.window.24716 AXFullScreen: Optional(0) com.microsoft.VSCode.window.24716 AXFrame: Optional( {value = x:-0.000000 y:38.000000 w:1728.000000 h:1078.000000 type = kAXValueCGRectType}) com.microsoft.VSCode.window.24716 AXPosition: Optional( {value = x:-0.000000 y:38.000000 type = kAXValueCGPointType}) com.microsoft.VSCode.window.24716 AXGrowArea: nil com.microsoft.VSCode.window.24716 AXMinimizeButton: AXUIElement { com.microsoft.VSCode.window.24716 AXRole: Optional(AXButton) com.microsoft.VSCode.window.24716 AXTitle: nil com.microsoft.VSCode.window.24716 AXSubrole: Optional(AXMinimizeButton) com.microsoft.VSCode.window.24716 AXEnabled: Optional(1) com.microsoft.VSCode.window.24716 AXParent: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 AXTopLevelUIElement: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 AXWindow: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription com.microsoft.VSCode.window.24716 } com.microsoft.VSCode.window.24716 AXDocument: Optional(file:///Users/artemhryn/.aerospace.toml) com.microsoft.VSCode.window.24716 AXSections: [ com.microsoft.VSCode.window.24716 Optional({ com.microsoft.VSCode.window.24716 SectionDescription = Content; com.microsoft.VSCode.window.24716 SectionObject = " {pid=87779}"; com.microsoft.VSCode.window.24716 SectionUniqueID = AXContent; com.microsoft.VSCode.window.24716 }), com.microsoft.VSCode.window.24716 Optional({ com.microsoft.VSCode.window.24716 SectionObject = " {pid=87779}"; com.microsoft.VSCode.window.24716 SectionUniqueID = AXContainer; com.microsoft.VSCode.window.24716 }) com.microsoft.VSCode.window.24716 ] com.microsoft.VSCode.window.24716 AXCloseButton: AXUIElement { com.microsoft.VSCode.window.24716 AXRole: Optional(AXButton) com.microsoft.VSCode.window.24716 AXTitle: nil com.microsoft.VSCode.window.24716 AXSubrole: Optional(AXCloseButton) com.microsoft.VSCode.window.24716 AXEnabled: Optional(1) com.microsoft.VSCode.window.24716 AXParent: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 AXTopLevelUIElement: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 AXWindow: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited com.microsoft.VSCode.window.24716 } com.microsoft.VSCode.window.24716 AXMain: Optional(1) com.microsoft.VSCode.window.24716 AXActivationPoint: Optional( {value = x:-1.000000 y:1118.000000 type = kAXValueCGPointType}) com.microsoft.VSCode.window.24716 AXFullScreenButton: AXUIElement { com.microsoft.VSCode.window.24716 AXRole: Optional(AXButton) com.microsoft.VSCode.window.24716 AXTitle: nil com.microsoft.VSCode.window.24716 AXSubrole: Optional(AXFullScreenButton) com.microsoft.VSCode.window.24716 AXEnabled: Optional(1) com.microsoft.VSCode.window.24716 AXParent: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 AXTopLevelUIElement: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 AXWindow: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription com.microsoft.VSCode.window.24716 } com.microsoft.VSCode.window.24716 AXProxy: nil com.microsoft.VSCode.window.24716 AXDefaultButton: nil com.microsoft.VSCode.window.24716 AXMinimized: Optional(0) com.microsoft.VSCode.window.24716 AXParent: Optional( {pid=87779}) com.microsoft.VSCode.window.24716 AXTitleUIElement: nil com.microsoft.VSCode.window.24716 AXCancelButton: nil com.microsoft.VSCode.window.24716 AXModal: Optional(0) com.microsoft.VSCode.window.24716 AXZoomButton: AXUIElement { com.microsoft.VSCode.window.24716 AXRole: Optional(AXButton) com.microsoft.VSCode.window.24716 AXTitle: nil com.microsoft.VSCode.window.24716 AXSubrole: Optional(AXFullScreenButton) com.microsoft.VSCode.window.24716 AXEnabled: Optional(1) com.microsoft.VSCode.window.24716 AXParent: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 AXTopLevelUIElement: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 AXWindow: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24716 Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription com.microsoft.VSCode.window.24716 } com.microsoft.VSCode.window.24716 AXSize: Optional( {value = w:1728.000000 h:1078.000000 type = kAXValueCGSizeType}) com.microsoft.VSCode.window.24716 AXToolbarButton: nil com.microsoft.VSCode.window.24716 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription com.microsoft.VSCode AXRole: Optional(AXApplication) com.microsoft.VSCode AXTitle: Optional(Code) com.microsoft.VSCode AXFunctionRowTopLevelElements: [ com.microsoft.VSCode ] com.microsoft.VSCode AXManualAccessibility: Optional(1) com.microsoft.VSCode AXFrame: nil com.microsoft.VSCode AXFocusedUIElement: AXUIElement(windowId=24716, title="", role="AXTextArea", subrole=nil) com.microsoft.VSCode AXFrontmost: Optional(1) com.microsoft.VSCode AXExtrasMenuBar: nil com.microsoft.VSCode AXMainWindow: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode AXFocusedWindow: AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode AXMenuBar: Optional( {pid=87779}) com.microsoft.VSCode AXWindows: [ com.microsoft.VSCode AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow"), com.microsoft.VSCode AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode ] com.microsoft.VSCode AXSize: nil com.microsoft.VSCode AXPosition: nil com.microsoft.VSCode Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden com.microsoft.VSCode.window.24717 windowId: 24717 com.microsoft.VSCode.window.24717 workspace: 3 com.microsoft.VSCode.window.24717 treeNodeParent: AppBundle.TilingContainer com.microsoft.VSCode.window.24717 recognizedAsDialog: false com.microsoft.VSCode.window.24717 AXTitle: Optional(Welcome) com.microsoft.VSCode.window.24717 AXRole: Optional(AXWindow) com.microsoft.VSCode.window.24717 AXSubrole: Optional(AXStandardWindow) com.microsoft.VSCode.window.24717 AXFocused: Optional(0) com.microsoft.VSCode.window.24717 AXFullScreen: Optional(0) com.microsoft.VSCode.window.24717 AXFrame: Optional( {value = x:867.000000 y:-1055.000000 w:1920.000000 h:1054.000000 type = kAXValueCGRectType}) com.microsoft.VSCode.window.24717 AXPosition: Optional( {value = x:867.000000 y:-1055.000000 type = kAXValueCGPointType}) com.microsoft.VSCode.window.24717 AXGrowArea: nil com.microsoft.VSCode.window.24717 AXMinimizeButton: AXUIElement { com.microsoft.VSCode.window.24717 AXRole: Optional(AXButton) com.microsoft.VSCode.window.24717 AXTitle: nil com.microsoft.VSCode.window.24717 AXSubrole: Optional(AXMinimizeButton) com.microsoft.VSCode.window.24717 AXEnabled: Optional(1) com.microsoft.VSCode.window.24717 AXParent: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 AXTopLevelUIElement: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 AXWindow: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription com.microsoft.VSCode.window.24717 } com.microsoft.VSCode.window.24717 AXDocument: nil com.microsoft.VSCode.window.24717 AXSections: [ com.microsoft.VSCode.window.24717 Optional({ com.microsoft.VSCode.window.24717 SectionDescription = Content; com.microsoft.VSCode.window.24717 SectionObject = " {pid=87779}"; com.microsoft.VSCode.window.24717 SectionUniqueID = AXContent; com.microsoft.VSCode.window.24717 }), com.microsoft.VSCode.window.24717 Optional({ com.microsoft.VSCode.window.24717 SectionObject = " {pid=87779}"; com.microsoft.VSCode.window.24717 SectionUniqueID = AXContainer; com.microsoft.VSCode.window.24717 }) com.microsoft.VSCode.window.24717 ] com.microsoft.VSCode.window.24717 AXCloseButton: AXUIElement { com.microsoft.VSCode.window.24717 AXRole: Optional(AXButton) com.microsoft.VSCode.window.24717 AXTitle: nil com.microsoft.VSCode.window.24717 AXSubrole: Optional(AXCloseButton) com.microsoft.VSCode.window.24717 AXEnabled: Optional(1) com.microsoft.VSCode.window.24717 AXParent: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 AXTopLevelUIElement: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 AXWindow: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited com.microsoft.VSCode.window.24717 } com.microsoft.VSCode.window.24717 AXMain: Optional(1) com.microsoft.VSCode.window.24717 AXActivationPoint: Optional( {value = x:-1.000000 y:1118.000000 type = kAXValueCGPointType}) com.microsoft.VSCode.window.24717 AXFullScreenButton: AXUIElement { com.microsoft.VSCode.window.24717 AXRole: Optional(AXButton) com.microsoft.VSCode.window.24717 AXTitle: nil com.microsoft.VSCode.window.24717 AXSubrole: Optional(AXFullScreenButton) com.microsoft.VSCode.window.24717 AXEnabled: Optional(1) com.microsoft.VSCode.window.24717 AXParent: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 AXTopLevelUIElement: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 AXWindow: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription com.microsoft.VSCode.window.24717 } com.microsoft.VSCode.window.24717 AXProxy: nil com.microsoft.VSCode.window.24717 AXDefaultButton: nil com.microsoft.VSCode.window.24717 AXMinimized: Optional(0) com.microsoft.VSCode.window.24717 AXParent: Optional( {pid=87779}) com.microsoft.VSCode.window.24717 AXTitleUIElement: nil com.microsoft.VSCode.window.24717 AXCancelButton: nil com.microsoft.VSCode.window.24717 AXModal: Optional(0) com.microsoft.VSCode.window.24717 AXZoomButton: AXUIElement { com.microsoft.VSCode.window.24717 AXRole: Optional(AXButton) com.microsoft.VSCode.window.24717 AXTitle: nil com.microsoft.VSCode.window.24717 AXSubrole: Optional(AXFullScreenButton) com.microsoft.VSCode.window.24717 AXEnabled: Optional(1) com.microsoft.VSCode.window.24717 AXParent: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 AXTopLevelUIElement: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 AXWindow: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode.window.24717 Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription com.microsoft.VSCode.window.24717 } com.microsoft.VSCode.window.24717 AXSize: Optional( {value = w:1920.000000 h:1054.000000 type = kAXValueCGSizeType}) com.microsoft.VSCode.window.24717 AXToolbarButton: nil com.microsoft.VSCode.window.24717 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription com.microsoft.VSCode AXRole: Optional(AXApplication) com.microsoft.VSCode AXTitle: Optional(Code) com.microsoft.VSCode AXFunctionRowTopLevelElements: [ com.microsoft.VSCode ] com.microsoft.VSCode AXManualAccessibility: Optional(1) com.microsoft.VSCode AXFrame: nil com.microsoft.VSCode AXFocusedUIElement: AXUIElement(windowId=24717, title="", role="AXGroup", subrole="AXDocument") com.microsoft.VSCode AXFrontmost: Optional(1) com.microsoft.VSCode AXExtrasMenuBar: nil com.microsoft.VSCode AXMainWindow: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode AXFocusedWindow: AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode AXMenuBar: Optional( {pid=87779}) com.microsoft.VSCode AXWindows: [ com.microsoft.VSCode AXUIElement(windowId=24717, title="Welcome", role="AXWindow", subrole="AXStandardWindow"), com.microsoft.VSCode AXUIElement(windowId=24716, title=".aerospace.toml", role="AXWindow", subrole="AXStandardWindow") com.microsoft.VSCode ] com.microsoft.VSCode AXSize: nil com.microsoft.VSCode AXPosition: nil com.microsoft.VSCode Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden !!! DISCLAIMER !!! !!! 'debug-windows' command is not stable API. Please don't rely on the command existence and output format !!! !!! The only intended use case is to report bugs about incorrect windows handling !!! Debug session finished ```
Config ``` # Place a copy of this config to ~/.aerospace.toml # After that, you can edit ~/.aerospace.toml to your liking # It's not necessary to copy all keys to your config. # If the key is missing in your config, "default-config.toml" will serve as a fallback # You can use it to add commands that run after login to macOS user session. # 'start-at-login' needs to be 'true' for 'after-login-command' to work # Available commands: https://nikitabobko.github.io/AeroSpace/commands after-login-command = [] # You can use it to add commands that run after AeroSpace startup. # 'after-startup-command' is run after 'after-login-command' # Available commands : https://nikitabobko.github.io/AeroSpace/commands after-startup-command = [] # Start AeroSpace at login start-at-login = true # Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization enable-normalization-flatten-containers = true enable-normalization-opposite-orientation-for-nested-containers = true # See: https://nikitabobko.github.io/AeroSpace/guide#layouts # The 'accordion-padding' specifies the size of accordion padding # You can set 0 to disable the padding feature accordion-padding = 0 # Possible values: tiles|accordion default-root-container-layout = 'accordion' # Possible values: horizontal|vertical|auto # 'auto' means: wide monitor (anything wider than high) gets horizontal orientation, # tall monitor (anything higher than wide) gets vertical orientation default-root-container-orientation = 'auto' # Possible values: (qwerty|dvorak) # See https://nikitabobko.github.io/AeroSpace/guide#key-mapping key-mapping.preset = 'qwerty' # Mouse follows focus when focused monitor changes # Drop it from your config, if you don't like this behavior # See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks # See https://nikitabobko.github.io/AeroSpace/commands#move-mouse on-focused-monitor-changed = ['move-mouse monitor-lazy-center'] # Gaps between windows (inner-*) and between monitor edges (outer-*). # Possible values: # - Constant: gaps.outer.top = 8 # - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24] # In this example, 24 is a default value when there is no match. # Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'. # See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors [gaps] inner.horizontal = 0 inner.vertical = 0 outer.left = 0 outer.bottom = 0 outer.top = 0 outer.right = 0 # 'main' binding mode declaration # See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes # 'main' binding mode must be always presented [mode.main.binding] # All possible keys: # - Letters. a, b, c, ..., z # - Numbers. 0, 1, 2, ..., 9 # - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9 # - F-keys. f1, f2, ..., f20 # - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, backtick, # leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab # - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual, # keypadMinus, keypadMultiply, keypadPlus # - Arrows. left, down, up, right # All possible modifiers: cmd, alt, ctrl, shift # All possible commands: https://nikitabobko.github.io/AeroSpace/commands # See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget # You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3) # alt-enter = '''exec-and-forget osascript -e ' # tell application "Terminal" # do script # activate # end tell' # ''' # See: https://nikitabobko.github.io/AeroSpace/commands#layout alt-slash = 'layout tiles horizontal vertical' alt-comma = 'layout accordion horizontal vertical' alt-t = 'layout floating tiling' # Monitor cmd-alt-ctrl-shift-n = 'focus-monitor --wrap-around next' cmd-alt-ctrl-shift-p = 'focus-monitor --wrap-around prev' # See: https://nikitabobko.github.io/AeroSpace/commands#focus cmd-alt-ctrl-shift-h = 'focus left --ignore-floating' cmd-alt-ctrl-shift-j = 'focus down --ignore-floating' cmd-alt-ctrl-shift-k = 'focus up --ignore-floating' cmd-alt-ctrl-shift-l = 'focus right --ignore-floating' alt-h = 'focus left' alt-j = 'focus down' alt-k = 'focus up' alt-l = 'focus right' # See: https://nikitabobko.github.io/AeroSpace/commands#move alt-shift-h = 'move left' alt-shift-j = 'move down' alt-shift-k = 'move up' alt-shift-l = 'move right' alt-n = ['move-node-to-monitor --wrap-around next', 'focus-monitor --wrap-around next'] alt-p = ['move-node-to-monitor --wrap-around prev', 'focus-monitor --wrap-around prev'] alt-b = 'focus-back-and-forth' # See: https://nikitabobko.github.io/AeroSpace/commands#resize alt-shift-minus = 'resize smart -50' alt-shift-equal = 'resize smart +50' # See: https://nikitabobko.github.io/AeroSpace/commands#workspace alt-1 = 'workspace 1' alt-2 = 'workspace 2' alt-3 = 'workspace 3' # alt-4 = 'workspace 4' # alt-5 = 'workspace 5' # alt-6 = 'workspace 6' # alt-7 = 'workspace 7' # alt-8 = 'workspace 8' # alt-9 = 'workspace 9' # See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace alt-shift-1 = 'move-node-to-workspace 1' alt-shift-2 = 'move-node-to-workspace 2' alt-shift-3 = 'move-node-to-workspace 3' # alt-shift-4 = 'move-node-to-workspace 4' # alt-shift-5 = 'move-node-to-workspace 5' # alt-shift-6 = 'move-node-to-workspace 6' # alt-shift-7 = 'move-node-to-workspace 7' # alt-shift-8 = 'move-node-to-workspace 8' # alt-shift-9 = 'move-node-to-workspace 9' # See: https://nikitabobko.github.io/AeroSpace/commands#mode alt-shift-semicolon = 'mode service' # 'service' binding mode declaration. # See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes [mode.service.binding] esc = ['reload-config', 'mode main'] r = ['flatten-workspace-tree', 'mode main'] # reset layout ctrl-r = ['enable off', 'enable on'] #s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2 f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout backspace = ['close-all-windows-but-current', 'mode main'] alt-shift-h = ['join-with left', 'mode main'] alt-shift-j = ['join-with down', 'mode main'] alt-shift-k = ['join-with up', 'mode main'] alt-shift-l = ['join-with right', 'mode main'] # assign workspaces [workspace-to-monitor-force-assignment] 1 = 1 2 = 2 3 = 3 # float windows [[on-window-detected]] if.app-id = 'com.googlecode.iterm2' if.window-title-regex-substring = 'iTerm2 Hotkey Window' run = ['layout floating'] [[on-window-detected]] if.app-id = 'com.google.android.studio' if.window-title-regex-substring = 'Running Devices.+' run = ['layout floating'] [[on-window-detected]] if.app-id = 'cc.ffitch.shottr' run = 'layout floating' [[on-window-detected]] if.app-id = 'com.apple.iphonesimulator' run = 'layout floating' [[on-window-detected]] if.app-id = 'com.colliderli.iina' run = 'layout floating' [[on-window-detected]] if.app-id = 'net.freemacsoft.AppCleaner' run = 'layout floating' [[on-window-detected]] if.app-id = 'com.windscribe.gui.macos' run = 'layout floating' ```

Checklist

I tried both 0.14.2 and 0.15.2 versions

aerospace CLI client version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58
AeroSpace.app server version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58
nikitabobko commented 3 weeks ago

Duplicate of #101