nikitabobko / AeroSpace

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

Error hide window of crossover application #279

Open shininome opened 3 months ago

shininome commented 3 months ago

When I use crossover to play Windows games, sometimes Aerospace hide the game window to the bottom right corner of the screen.

I have to change the screen resolution to locate the hidden window, but I cannot consistently trigger this bug; most of the time it behaves normally.

[[on-window-detected]]
if.app-id = 'com.codeweavers.CrossOver'
run = ['layout floating','move-node-to-workspace 5']

[[on-window-detected]]
if.window-title-regex-substring = 'exe$'
run = 'layout floating'
72456 | com.codeweavers.CrossOver    | CrossOver
72492 | NULL-APP-ID                  | Sakura.exe
shininome commented 3 months ago
com.googlecode.iterm2.window.12307 windowId: 12307
com.googlecode.iterm2.window.12307 workspace: 5
com.googlecode.iterm2.window.12307 treeNodeParent: AppBundle.TilingContainer
com.googlecode.iterm2.window.12307 recognizedAsDialog: false
com.googlecode.iterm2.window.12307 AXTitle: Optional(aerospace debug-windows)
com.googlecode.iterm2.window.12307 AXRole: Optional(AXWindow)
com.googlecode.iterm2.window.12307 AXSubrole: Optional(AXStandardWindow)
com.googlecode.iterm2.window.12307 AXFocused: Optional(0)
com.googlecode.iterm2.window.12307 AXFullScreen: Optional(0)
com.googlecode.iterm2.window.12307 AXFrame: Optional(<AXValue 0x600003233500> {value = x:-0.000000 y:25.000000 w:2408.000000 h:982.000000 type = kAXValueCGRectType})
com.googlecode.iterm2.window.12307 AXPosition: Optional(<AXValue 0x6000029303f0> {value = x:-0.000000 y:25.000000 type = kAXValueCGPointType})
com.googlecode.iterm2.window.12307 AXGrowArea: nil
com.googlecode.iterm2.window.12307 AXMinimizeButton: AXUIElement {
com.googlecode.iterm2.window.12307      AXRole: Optional(AXButton)
com.googlecode.iterm2.window.12307      AXTitle: nil
com.googlecode.iterm2.window.12307      AXSubrole: Optional(AXMinimizeButton)
com.googlecode.iterm2.window.12307      AXEnabled: Optional(1)
com.googlecode.iterm2.window.12307      AXParent: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      AXTopLevelUIElement: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      AXWindow: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription
com.googlecode.iterm2.window.12307 }
com.googlecode.iterm2.window.12307 AXDocument: nil
com.googlecode.iterm2.window.12307 AXSections: [
com.googlecode.iterm2.window.12307         Optional({
com.googlecode.iterm2.window.12307             SectionDescription = Content;
com.googlecode.iterm2.window.12307             SectionObject = "<AXUIElement 0x600002930570> {pid=1155}";
com.googlecode.iterm2.window.12307             SectionUniqueID = AXContent;
com.googlecode.iterm2.window.12307         })
com.googlecode.iterm2.window.12307 ]
com.googlecode.iterm2.window.12307 AXCloseButton: AXUIElement {
com.googlecode.iterm2.window.12307      AXRole: Optional(AXButton)
com.googlecode.iterm2.window.12307      AXTitle: nil
com.googlecode.iterm2.window.12307      AXSubrole: Optional(AXCloseButton)
com.googlecode.iterm2.window.12307      AXEnabled: Optional(1)
com.googlecode.iterm2.window.12307      AXParent: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      AXTopLevelUIElement: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      AXWindow: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited
com.googlecode.iterm2.window.12307 }
com.googlecode.iterm2.window.12307 AXMain: Optional(1)
com.googlecode.iterm2.window.12307 AXActivationPoint: Optional(<AXValue 0x6000029583c0> {value = x:-1.000000 y:1009.000000 type = kAXValueCGPointType})
com.googlecode.iterm2.window.12307 AXFullScreenButton: AXUIElement {
com.googlecode.iterm2.window.12307      AXRole: Optional(AXButton)
com.googlecode.iterm2.window.12307      AXTitle: nil
com.googlecode.iterm2.window.12307      AXSubrole: Optional(AXFullScreenButton)
com.googlecode.iterm2.window.12307      AXEnabled: Optional(1)
com.googlecode.iterm2.window.12307      AXParent: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      AXTopLevelUIElement: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      AXWindow: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
com.googlecode.iterm2.window.12307 }
com.googlecode.iterm2.window.12307 AXProxy: nil
com.googlecode.iterm2.window.12307 AXDefaultButton: nil
com.googlecode.iterm2.window.12307 AXMinimized: Optional(0)
com.googlecode.iterm2.window.12307 AXParent: Optional(<AXUIElement Application 0x60000294f570> {pid=1155})
com.googlecode.iterm2.window.12307 AXTitleUIElement: AXUIElement(windowId=12307, title=nil, role="AXStaticText", subrole=nil)
com.googlecode.iterm2.window.12307 AXCancelButton: nil
com.googlecode.iterm2.window.12307 AXModal: Optional(0)
com.googlecode.iterm2.window.12307 AXZoomButton: AXUIElement {
com.googlecode.iterm2.window.12307      AXRole: Optional(AXButton)
com.googlecode.iterm2.window.12307      AXTitle: nil
com.googlecode.iterm2.window.12307      AXSubrole: Optional(AXFullScreenButton)
com.googlecode.iterm2.window.12307      AXEnabled: Optional(1)
com.googlecode.iterm2.window.12307      AXParent: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      AXTopLevelUIElement: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      AXWindow: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2.window.12307      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
com.googlecode.iterm2.window.12307 }
com.googlecode.iterm2.window.12307 AXSize: Optional(<AXValue 0x6000029583c0> {value = w:2408.000000 h:982.000000 type = kAXValueCGSizeType})
com.googlecode.iterm2.window.12307 AXToolbarButton: nil
com.googlecode.iterm2.window.12307 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription
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=12307, title=nil, role="AXTextArea", subrole=nil)
com.googlecode.iterm2              AXFrontmost: Optional(1)
com.googlecode.iterm2              AXExtrasMenuBar: nil
com.googlecode.iterm2              AXMainWindow: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2              AXFocusedWindow: AXUIElement(windowId=12307, title="aerospace debug-windows", role="AXWindow", subrole="AXStandardWindow")
com.googlecode.iterm2              AXMenuBar: Optional(<AXUIElement 0x60000294f570> {pid=1155})
com.googlecode.iterm2              AXWindows: [
com.googlecode.iterm2                  AXUIElement(windowId=12307, title="aerospace debug-windows", 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

pro.betterdisplay.BetterDisplay.window.96 windowId: 96
pro.betterdisplay.BetterDisplay.window.96 workspace: nil
pro.betterdisplay.BetterDisplay.window.96 treeNodeParent: AppBundle.MacosPopupWindowsContainer
pro.betterdisplay.BetterDisplay.window.96 recognizedAsDialog: true
pro.betterdisplay.BetterDisplay.window.96 AXRole: Optional(AXPopover)
pro.betterdisplay.BetterDisplay.window.96 AXTitle: nil
pro.betterdisplay.BetterDisplay.window.96 AXFrame: Optional(<AXValue 0x60000325cbc0> {value = x:1667.000000 y:12.000000 w:296.000000 h:560.000000 type = kAXValueCGRectType})
pro.betterdisplay.BetterDisplay.window.96 AXDescription: Optional()
pro.betterdisplay.BetterDisplay.window.96 AXParent: Optional(<AXUIElement 0x60000295a700> {pid=711})
pro.betterdisplay.BetterDisplay.window.96 AXSize: Optional(<AXValue 0x60000295a700> {value = w:296.000000 h:560.000000 type = kAXValueCGSizeType})
pro.betterdisplay.BetterDisplay.window.96 AXFocused: Optional(1)
pro.betterdisplay.BetterDisplay.window.96 AXTopLevelUIElement: nil
pro.betterdisplay.BetterDisplay.window.96 AXPosition: Optional(<AXValue 0x600002930690> {value = x:1667.000000 y:12.000000 type = kAXValueCGPointType})
pro.betterdisplay.BetterDisplay.window.96 AXWindow: nil
pro.betterdisplay.BetterDisplay.window.96 Ignored: AXChildren, AXHelp, AXChildrenInNavigationOrder, AXRoleDescription
pro.betterdisplay.BetterDisplay           AXRole: Optional(AXApplication)
pro.betterdisplay.BetterDisplay           AXTitle: Optional(BetterDisplay)
pro.betterdisplay.BetterDisplay           AXFunctionRowTopLevelElements: [
pro.betterdisplay.BetterDisplay           ]
pro.betterdisplay.BetterDisplay           AXFrame: nil
pro.betterdisplay.BetterDisplay           AXFocusedUIElement: AXUIElement(windowId=96, title=nil, role="AXPopover", subrole=nil)
pro.betterdisplay.BetterDisplay           AXFrontmost: Optional(1)
pro.betterdisplay.BetterDisplay           AXExtrasMenuBar: Optional(<AXUIElement 0x60000294b4e0> {pid=711})
pro.betterdisplay.BetterDisplay           AXMainWindow: nil
pro.betterdisplay.BetterDisplay           AXFocusedWindow: AXUIElement(windowId=96, title=nil, role="AXPopover", subrole=nil)
pro.betterdisplay.BetterDisplay           AXMenuBar: Optional(<AXUIElement 0x600002930690> {pid=711})
pro.betterdisplay.BetterDisplay           AXWindows: [
pro.betterdisplay.BetterDisplay           ]
pro.betterdisplay.BetterDisplay           AXSize: nil
pro.betterdisplay.BetterDisplay           AXPosition: nil
pro.betterdisplay.BetterDisplay           Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden

null-app-id.window.12300 windowId: 12300
null-app-id.window.12300 workspace: 5
null-app-id.window.12300 treeNodeParent: Workspace(name: '5', isVisible: 'true', isEffectivelyEmpty: 'false')
null-app-id.window.12300 recognizedAsDialog: true
null-app-id.window.12300 AXTitle: Optional(樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09)
null-app-id.window.12300 AXRole: Optional(AXWindow)
null-app-id.window.12300 AXSubrole: Optional(AXStandardWindow)
null-app-id.window.12300 AXFocused: Optional(1)
null-app-id.window.12300 AXFullScreen: Optional(0)
null-app-id.window.12300 AXFrame: Optional(<AXValue 0x600003260dc0> {value = x:2408.000000 y:994.000000 w:1280.000000 h:748.000000 type = kAXValueCGRectType})
null-app-id.window.12300 AXPosition: Optional(<AXValue 0x60000295be40> {value = x:2408.000000 y:994.000000 type = kAXValueCGPointType})
null-app-id.window.12300 AXGrowArea: nil
null-app-id.window.12300 AXMinimizeButton: AXUIElement {
null-app-id.window.12300      AXRole: Optional(AXButton)
null-app-id.window.12300      AXTitle: nil
null-app-id.window.12300      AXSubrole: Optional(AXMinimizeButton)
null-app-id.window.12300      AXEnabled: Optional(1)
null-app-id.window.12300      AXParent: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id.window.12300      AXTopLevelUIElement: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id.window.12300      AXWindow: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id.window.12300      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription
null-app-id.window.12300 }
null-app-id.window.12300 AXDocument: nil
null-app-id.window.12300 AXSections: [
null-app-id.window.12300         Optional({
null-app-id.window.12300             SectionDescription = Content;
null-app-id.window.12300             SectionObject = "<AXUIElement 0x600002931260> {pid=86504}";
null-app-id.window.12300             SectionUniqueID = AXContent;
null-app-id.window.12300         })
null-app-id.window.12300 ]
null-app-id.window.12300 AXCloseButton: AXUIElement {
null-app-id.window.12300      AXRole: Optional(AXButton)
null-app-id.window.12300      AXTitle: nil
null-app-id.window.12300      AXSubrole: Optional(AXCloseButton)
null-app-id.window.12300      AXEnabled: Optional(1)
null-app-id.window.12300      AXParent: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id.window.12300      AXTopLevelUIElement: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id.window.12300      AXWindow: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id.window.12300      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited
null-app-id.window.12300 }
null-app-id.window.12300 AXMain: Optional(1)
null-app-id.window.12300 AXActivationPoint: Optional(<AXValue 0x60000294b750> {value = x:2478.000000 y:1008.000000 type = kAXValueCGPointType})
null-app-id.window.12300 AXFullScreenButton: nil
null-app-id.window.12300 AXProxy: nil
null-app-id.window.12300 AXDefaultButton: nil
null-app-id.window.12300 AXMinimized: Optional(0)
null-app-id.window.12300 AXParent: Optional(<AXUIElement Application 0x60000294f900> {pid=86504})
null-app-id.window.12300 AXTitleUIElement: AXUIElement(windowId=12300, title=nil, role="AXStaticText", subrole=nil)
null-app-id.window.12300 AXCancelButton: nil
null-app-id.window.12300 AXModal: Optional(0)
null-app-id.window.12300 AXZoomButton: AXUIElement {
null-app-id.window.12300      AXRole: Optional(AXButton)
null-app-id.window.12300      AXTitle: nil
null-app-id.window.12300      AXSubrole: Optional(AXZoomButton)
null-app-id.window.12300      AXEnabled: Optional(0)
null-app-id.window.12300      AXParent: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id.window.12300      AXTopLevelUIElement: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id.window.12300      AXWindow: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id.window.12300      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
null-app-id.window.12300 }
null-app-id.window.12300 AXSize: Optional(<AXValue 0x60000294f900> {value = w:1280.000000 h:748.000000 type = kAXValueCGSizeType})
null-app-id.window.12300 AXToolbarButton: nil
null-app-id.window.12300 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription
null-app-id              AXRole: Optional(AXApplication)
null-app-id              AXTitle: Optional(Sakura.exe)
null-app-id              AXFunctionRowTopLevelElements: [
null-app-id              ]
null-app-id              AXFrame: nil
null-app-id              AXFocusedUIElement: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id              AXFrontmost: Optional(1)
null-app-id              AXExtrasMenuBar: nil
null-app-id              AXMainWindow: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id              AXFocusedWindow: AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id              AXMenuBar: Optional(<AXUIElement 0x60000294f900> {pid=86504})
null-app-id              AXWindows: [
null-app-id                  AXUIElement(windowId=12300, title="樱花、萌放 -as the Night's, Reincarnation- 文本版本-2023/03/27-09", role="AXWindow", subrole="AXStandardWindow")
null-app-id              ]
null-app-id              AXSize: nil
null-app-id              AXPosition: nil
null-app-id              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 !!!