nikitabobko / AeroSpace

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

TablePlus Database "Windows" are detected as separate windows #307

Open gempir opened 6 days ago

gempir commented 6 days ago

The database client https://tableplus.com/ supports having multiple databases open. They call that windows. But the window is in the same macOS window.

AeroSpace detects these as separate windows and splits them that way.

The free version supports 2 "windows" so it can be reproduced with that.

https://github.com/nikitabobko/AeroSpace/assets/9765622/8aa03714-6fc2-4a03-88d8-54f8036e9deb

nikitabobko commented 6 days ago

I wonder if they use the same mechanism as native macOS tabs #68

Can you please:

  1. open two windows/tabs
  2. Run aerospace debug-windows
  3. Switch between windows/tabs as you did on the video
  4. Run aerospace debug-windows once again
  5. Attach the log
gempir commented 6 days ago

Sure!

org.alacritty.window.52167 windowId: 52167
org.alacritty.window.52167 workspace: 7
org.alacritty.window.52167 treeNodeParent: AppBundle.TilingContainer
org.alacritty.window.52167 recognizedAsDialog: false
org.alacritty.window.52167 AXTitle: Optional(Alacritty)
org.alacritty.window.52167 AXRole: Optional(AXWindow)
org.alacritty.window.52167 AXSubrole: Optional(AXStandardWindow)
org.alacritty.window.52167 AXFocused: Optional(1)
org.alacritty.window.52167 AXFullScreen: Optional(0)
org.alacritty.window.52167 AXFrame: Optional(<AXValue 0x600000fc2580> {value = x:-960.000000 y:25.000000 w:960.000000 h:1054.000000 type = kAXValueCGRectType})
org.alacritty.window.52167 AXPosition: Optional(<AXValue 0x600001479740> {value = x:-960.000000 y:25.000000 type = kAXValueCGPointType})
org.alacritty.window.52167 AXGrowArea: nil
org.alacritty.window.52167 AXMinimizeButton: AXUIElement {
org.alacritty.window.52167      AXRole: Optional(AXButton)
org.alacritty.window.52167      AXTitle: nil
org.alacritty.window.52167      AXSubrole: Optional(AXMinimizeButton)
org.alacritty.window.52167      AXEnabled: Optional(1)
org.alacritty.window.52167      AXParent: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      AXTopLevelUIElement: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      AXWindow: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription
org.alacritty.window.52167 }
org.alacritty.window.52167 AXDocument: nil
org.alacritty.window.52167 AXSections: [
org.alacritty.window.52167 ]
org.alacritty.window.52167 AXCloseButton: AXUIElement {
org.alacritty.window.52167      AXRole: Optional(AXButton)
org.alacritty.window.52167      AXTitle: nil
org.alacritty.window.52167      AXSubrole: Optional(AXCloseButton)
org.alacritty.window.52167      AXEnabled: Optional(1)
org.alacritty.window.52167      AXParent: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      AXTopLevelUIElement: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      AXWindow: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited
org.alacritty.window.52167 }
org.alacritty.window.52167 AXMain: Optional(1)
org.alacritty.window.52167 AXActivationPoint: Optional(<AXValue 0x60000147b180> {value = x:-950.000000 y:39.000000 type = kAXValueCGPointType})
org.alacritty.window.52167 AXFullScreenButton: AXUIElement {
org.alacritty.window.52167      AXRole: Optional(AXButton)
org.alacritty.window.52167      AXTitle: nil
org.alacritty.window.52167      AXSubrole: Optional(AXFullScreenButton)
org.alacritty.window.52167      AXEnabled: Optional(1)
org.alacritty.window.52167      AXParent: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      AXTopLevelUIElement: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      AXWindow: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
org.alacritty.window.52167 }
org.alacritty.window.52167 AXProxy: nil
org.alacritty.window.52167 AXDefaultButton: nil
org.alacritty.window.52167 AXMinimized: Optional(0)
org.alacritty.window.52167 AXParent: Optional(<AXUIElement Application 0x60000148a700> {pid=18773})
org.alacritty.window.52167 AXTitleUIElement: nil
org.alacritty.window.52167 AXCancelButton: nil
org.alacritty.window.52167 AXModal: Optional(0)
org.alacritty.window.52167 AXZoomButton: AXUIElement {
org.alacritty.window.52167      AXRole: Optional(AXButton)
org.alacritty.window.52167      AXTitle: nil
org.alacritty.window.52167      AXSubrole: Optional(AXFullScreenButton)
org.alacritty.window.52167      AXEnabled: Optional(1)
org.alacritty.window.52167      AXParent: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      AXTopLevelUIElement: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      AXWindow: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty.window.52167      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
org.alacritty.window.52167 }
org.alacritty.window.52167 AXSize: Optional(<AXValue 0x60000148a700> {value = w:960.000000 h:1054.000000 type = kAXValueCGSizeType})
org.alacritty.window.52167 AXToolbarButton: nil
org.alacritty.window.52167 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription
org.alacritty              AXRole: Optional(AXApplication)
org.alacritty              AXTitle: Optional(Alacritty)
org.alacritty              AXFunctionRowTopLevelElements: [
org.alacritty              ]
org.alacritty              AXFrame: nil
org.alacritty              AXFocusedUIElement: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty              AXFrontmost: Optional(1)
org.alacritty              AXExtrasMenuBar: nil
org.alacritty              AXMainWindow: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty              AXFocusedWindow: AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty              AXMenuBar: Optional(<AXUIElement 0x6000014aa370> {pid=18773})
org.alacritty              AXWindows: [
org.alacritty                  AXUIElement(windowId=52167, title="Alacritty", role="AXWindow", subrole="AXStandardWindow")
org.alacritty              ]
org.alacritty              AXSize: nil
org.alacritty              AXPosition: nil
org.alacritty              Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden

com.tinyapp.TablePlus.window.52169 windowId: 52169
com.tinyapp.TablePlus.window.52169 workspace: 6
com.tinyapp.TablePlus.window.52169 treeNodeParent: AppBundle.TilingContainer
com.tinyapp.TablePlus.window.52169 recognizedAsDialog: false
com.tinyapp.TablePlus.window.52169 AXTitle: Optional(docker mysql : mysql - MySQL 8.0.34)
com.tinyapp.TablePlus.window.52169 AXRole: Optional(AXWindow)
com.tinyapp.TablePlus.window.52169 AXSubrole: Optional(AXStandardWindow)
com.tinyapp.TablePlus.window.52169 AXIdentifier: Optional(_NS:9)
com.tinyapp.TablePlus.window.52169 AXFocused: Optional(0)
com.tinyapp.TablePlus.window.52169 AXFullScreen: Optional(0)
com.tinyapp.TablePlus.window.52169 AXFrame: Optional(<AXValue 0x600000fd3b00> {value = x:0.000000 y:25.000000 w:1280.000000 h:1414.000000 type = kAXValueCGRectType})
com.tinyapp.TablePlus.window.52169 AXPosition: Optional(<AXValue 0x60000148b810> {value = x:0.000000 y:25.000000 type = kAXValueCGPointType})
com.tinyapp.TablePlus.window.52169 AXGrowArea: nil
com.tinyapp.TablePlus.window.52169 AXMinimizeButton: AXUIElement {
com.tinyapp.TablePlus.window.52169      AXRole: Optional(AXButton)
com.tinyapp.TablePlus.window.52169      AXTitle: nil
com.tinyapp.TablePlus.window.52169      AXSubrole: Optional(AXMinimizeButton)
com.tinyapp.TablePlus.window.52169      AXEnabled: Optional(1)
com.tinyapp.TablePlus.window.52169      AXParent: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      AXTopLevelUIElement: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      AXWindow: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription
com.tinyapp.TablePlus.window.52169 }
com.tinyapp.TablePlus.window.52169 AXDocument: nil
com.tinyapp.TablePlus.window.52169 AXSections: [
com.tinyapp.TablePlus.window.52169         Optional({
com.tinyapp.TablePlus.window.52169             SectionDescription = Content;
com.tinyapp.TablePlus.window.52169             SectionObject = "<AXUIElement 0x600001489b30> {pid=96438}";
com.tinyapp.TablePlus.window.52169             SectionUniqueID = AXContent;
com.tinyapp.TablePlus.window.52169         }),
com.tinyapp.TablePlus.window.52169         Optional({
com.tinyapp.TablePlus.window.52169             SectionDescription = "Top Level Navigator";
com.tinyapp.TablePlus.window.52169             SectionObject = "<AXUIElement 0x60000148a040> {pid=96438}";
com.tinyapp.TablePlus.window.52169             SectionUniqueID = AXTopLevelNavigator;
com.tinyapp.TablePlus.window.52169         }),
com.tinyapp.TablePlus.window.52169         Optional({
com.tinyapp.TablePlus.window.52169             SectionDescription = Toolbar;
com.tinyapp.TablePlus.window.52169             SectionObject = "<AXUIElement 0x600001489cb0> {pid=96438}";
com.tinyapp.TablePlus.window.52169             SectionUniqueID = AXToolbar;
com.tinyapp.TablePlus.window.52169         }),
com.tinyapp.TablePlus.window.52169         Optional({
com.tinyapp.TablePlus.window.52169             SectionObject = "<AXUIElement 0x60000148b270> {pid=96438}";
com.tinyapp.TablePlus.window.52169             SectionUniqueID = AXContainer;
com.tinyapp.TablePlus.window.52169         }),
com.tinyapp.TablePlus.window.52169         Optional({
com.tinyapp.TablePlus.window.52169             SectionObject = "<AXUIElement 0x60000148b840> {pid=96438}";
com.tinyapp.TablePlus.window.52169             SectionUniqueID = AXContainer;
com.tinyapp.TablePlus.window.52169         }),
com.tinyapp.TablePlus.window.52169         Optional({
com.tinyapp.TablePlus.window.52169             SectionDescription = Search;
com.tinyapp.TablePlus.window.52169             SectionObject = "<AXUIElement 0x60000148a1f0> {pid=96438}";
com.tinyapp.TablePlus.window.52169             SectionUniqueID = AXSearch;
com.tinyapp.TablePlus.window.52169         }),
com.tinyapp.TablePlus.window.52169         Optional({
com.tinyapp.TablePlus.window.52169             SectionDescription = "Content Navigator";
com.tinyapp.TablePlus.window.52169             SectionObject = "<AXUIElement 0x60000148bdb0> {pid=96438}";
com.tinyapp.TablePlus.window.52169             SectionUniqueID = AXContentNavigator;
com.tinyapp.TablePlus.window.52169         })
com.tinyapp.TablePlus.window.52169 ]
com.tinyapp.TablePlus.window.52169 AXCloseButton: AXUIElement {
com.tinyapp.TablePlus.window.52169      AXRole: Optional(AXButton)
com.tinyapp.TablePlus.window.52169      AXTitle: nil
com.tinyapp.TablePlus.window.52169      AXSubrole: Optional(AXCloseButton)
com.tinyapp.TablePlus.window.52169      AXEnabled: Optional(1)
com.tinyapp.TablePlus.window.52169      AXParent: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      AXTopLevelUIElement: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      AXWindow: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited
com.tinyapp.TablePlus.window.52169 }
com.tinyapp.TablePlus.window.52169 AXMain: Optional(1)
com.tinyapp.TablePlus.window.52169 AXActivationPoint: Optional(<AXValue 0x60000148a3a0> {value = x:10.000000 y:39.000000 type = kAXValueCGPointType})
com.tinyapp.TablePlus.window.52169 AXFullScreenButton: AXUIElement {
com.tinyapp.TablePlus.window.52169      AXRole: Optional(AXButton)
com.tinyapp.TablePlus.window.52169      AXTitle: nil
com.tinyapp.TablePlus.window.52169      AXSubrole: Optional(AXFullScreenButton)
com.tinyapp.TablePlus.window.52169      AXEnabled: Optional(1)
com.tinyapp.TablePlus.window.52169      AXParent: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      AXTopLevelUIElement: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      AXWindow: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
com.tinyapp.TablePlus.window.52169 }
com.tinyapp.TablePlus.window.52169 AXProxy: nil
com.tinyapp.TablePlus.window.52169 AXDefaultButton: AXUIElement {
com.tinyapp.TablePlus.window.52169      AXRole: Optional(AXButton)
com.tinyapp.TablePlus.window.52169      AXTitle: Optional(OK)
com.tinyapp.TablePlus.window.52169      AXIdentifier: Optional(_NS:52)
com.tinyapp.TablePlus.window.52169      AXEnabled: Optional(1)
com.tinyapp.TablePlus.window.52169      AXParent: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      AXTopLevelUIElement: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      AXWindow: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription
com.tinyapp.TablePlus.window.52169 }
com.tinyapp.TablePlus.window.52169 AXMinimized: Optional(0)
com.tinyapp.TablePlus.window.52169 AXParent: Optional(<AXUIElement Application 0x60000147a9a0> {pid=96438})
com.tinyapp.TablePlus.window.52169 AXTitleUIElement: nil
com.tinyapp.TablePlus.window.52169 AXCancelButton: nil
com.tinyapp.TablePlus.window.52169 AXModal: Optional(0)
com.tinyapp.TablePlus.window.52169 AXZoomButton: AXUIElement {
com.tinyapp.TablePlus.window.52169      AXRole: Optional(AXButton)
com.tinyapp.TablePlus.window.52169      AXTitle: nil
com.tinyapp.TablePlus.window.52169      AXSubrole: Optional(AXFullScreenButton)
com.tinyapp.TablePlus.window.52169      AXEnabled: Optional(1)
com.tinyapp.TablePlus.window.52169      AXParent: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      AXTopLevelUIElement: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      AXWindow: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52169      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
com.tinyapp.TablePlus.window.52169 }
com.tinyapp.TablePlus.window.52169 AXSize: Optional(<AXValue 0x60000148b810> {value = w:1280.000000 h:1414.000000 type = kAXValueCGSizeType})
com.tinyapp.TablePlus.window.52169 AXToolbarButton: nil
com.tinyapp.TablePlus.window.52169 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription
com.tinyapp.TablePlus              AXRole: Optional(AXApplication)
com.tinyapp.TablePlus              AXTitle: Optional(TablePlus)
com.tinyapp.TablePlus              AXFunctionRowTopLevelElements: [
com.tinyapp.TablePlus              ]
com.tinyapp.TablePlus              AXFrame: nil
com.tinyapp.TablePlus              AXFocusedUIElement: AXUIElement {
com.tinyapp.TablePlus                   AXRole: Optional(AXButton)
com.tinyapp.TablePlus                   AXEnabled: Optional(1)
com.tinyapp.TablePlus                   AXDescription: Optional(Connection)
com.tinyapp.TablePlus                   AXParent: AXUIElement(windowId=52169, title=nil, role="AXToolbar", subrole=nil)
com.tinyapp.TablePlus                   AXTopLevelUIElement: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus                   AXWindow: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus                   Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription
com.tinyapp.TablePlus              }
com.tinyapp.TablePlus              AXFrontmost: Optional(1)
com.tinyapp.TablePlus              AXExtrasMenuBar: nil
com.tinyapp.TablePlus              AXMainWindow: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus              AXFocusedWindow: AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus              AXMenuBar: Optional(<AXUIElement 0x60000148a1f0> {pid=96438})
com.tinyapp.TablePlus              AXWindows: [
com.tinyapp.TablePlus                  AXUIElement(windowId=52169, title="docker mysql : mysql - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus              ]
com.tinyapp.TablePlus              AXSize: nil
com.tinyapp.TablePlus              AXPosition: nil
com.tinyapp.TablePlus              Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden

com.tinyapp.TablePlus.window.52170 windowId: 52170
com.tinyapp.TablePlus.window.52170 workspace: 6
com.tinyapp.TablePlus.window.52170 treeNodeParent: AppBundle.TilingContainer
com.tinyapp.TablePlus.window.52170 recognizedAsDialog: false
com.tinyapp.TablePlus.window.52170 AXTitle: Optional(docker mysql : performance_schema - MySQL 8.0.34)
com.tinyapp.TablePlus.window.52170 AXRole: Optional(AXWindow)
com.tinyapp.TablePlus.window.52170 AXSubrole: Optional(AXStandardWindow)
com.tinyapp.TablePlus.window.52170 AXIdentifier: Optional(_NS:9)
com.tinyapp.TablePlus.window.52170 AXFocused: Optional(1)
com.tinyapp.TablePlus.window.52170 AXFullScreen: Optional(0)
com.tinyapp.TablePlus.window.52170 AXFrame: Optional(<AXValue 0x600000f50d00> {value = x:0.000000 y:25.000000 w:1280.000000 h:1414.000000 type = kAXValueCGRectType})
com.tinyapp.TablePlus.window.52170 AXPosition: Optional(<AXValue 0x6000014b62e0> {value = x:0.000000 y:25.000000 type = kAXValueCGPointType})
com.tinyapp.TablePlus.window.52170 AXGrowArea: nil
com.tinyapp.TablePlus.window.52170 AXMinimizeButton: AXUIElement {
com.tinyapp.TablePlus.window.52170      AXRole: Optional(AXButton)
com.tinyapp.TablePlus.window.52170      AXTitle: nil
com.tinyapp.TablePlus.window.52170      AXSubrole: Optional(AXMinimizeButton)
com.tinyapp.TablePlus.window.52170      AXEnabled: Optional(1)
com.tinyapp.TablePlus.window.52170      AXParent: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      AXTopLevelUIElement: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      AXWindow: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription
com.tinyapp.TablePlus.window.52170 }
com.tinyapp.TablePlus.window.52170 AXDocument: nil
com.tinyapp.TablePlus.window.52170 AXSections: [
com.tinyapp.TablePlus.window.52170         Optional({
com.tinyapp.TablePlus.window.52170             SectionDescription = Content;
com.tinyapp.TablePlus.window.52170             SectionObject = "<AXUIElement 0x60000148acd0> {pid=96438}";
com.tinyapp.TablePlus.window.52170             SectionUniqueID = AXContent;
com.tinyapp.TablePlus.window.52170         }),
com.tinyapp.TablePlus.window.52170         Optional({
com.tinyapp.TablePlus.window.52170             SectionDescription = "Top Level Navigator";
com.tinyapp.TablePlus.window.52170             SectionObject = "<AXUIElement 0x60000148bae0> {pid=96438}";
com.tinyapp.TablePlus.window.52170             SectionUniqueID = AXTopLevelNavigator;
com.tinyapp.TablePlus.window.52170         }),
com.tinyapp.TablePlus.window.52170         Optional({
com.tinyapp.TablePlus.window.52170             SectionDescription = Toolbar;
com.tinyapp.TablePlus.window.52170             SectionObject = "<AXUIElement 0x60000148a010> {pid=96438}";
com.tinyapp.TablePlus.window.52170             SectionUniqueID = AXToolbar;
com.tinyapp.TablePlus.window.52170         }),
com.tinyapp.TablePlus.window.52170         Optional({
com.tinyapp.TablePlus.window.52170             SectionObject = "<AXUIElement 0x60000148b810> {pid=96438}";
com.tinyapp.TablePlus.window.52170             SectionUniqueID = AXContainer;
com.tinyapp.TablePlus.window.52170         }),
com.tinyapp.TablePlus.window.52170         Optional({
com.tinyapp.TablePlus.window.52170             SectionObject = "<AXUIElement 0x600001489d10> {pid=96438}";
com.tinyapp.TablePlus.window.52170             SectionUniqueID = AXContainer;
com.tinyapp.TablePlus.window.52170         }),
com.tinyapp.TablePlus.window.52170         Optional({
com.tinyapp.TablePlus.window.52170             SectionDescription = Search;
com.tinyapp.TablePlus.window.52170             SectionObject = "<AXUIElement 0x600001489ce0> {pid=96438}";
com.tinyapp.TablePlus.window.52170             SectionUniqueID = AXSearch;
com.tinyapp.TablePlus.window.52170         }),
com.tinyapp.TablePlus.window.52170         Optional({
com.tinyapp.TablePlus.window.52170             SectionDescription = "Content Navigator";
com.tinyapp.TablePlus.window.52170             SectionObject = "<AXUIElement 0x60000148a0a0> {pid=96438}";
com.tinyapp.TablePlus.window.52170             SectionUniqueID = AXContentNavigator;
com.tinyapp.TablePlus.window.52170         })
com.tinyapp.TablePlus.window.52170 ]
com.tinyapp.TablePlus.window.52170 AXCloseButton: AXUIElement {
com.tinyapp.TablePlus.window.52170      AXRole: Optional(AXButton)
com.tinyapp.TablePlus.window.52170      AXTitle: nil
com.tinyapp.TablePlus.window.52170      AXSubrole: Optional(AXCloseButton)
com.tinyapp.TablePlus.window.52170      AXEnabled: Optional(1)
com.tinyapp.TablePlus.window.52170      AXParent: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      AXTopLevelUIElement: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      AXWindow: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited
com.tinyapp.TablePlus.window.52170 }
com.tinyapp.TablePlus.window.52170 AXMain: Optional(1)
com.tinyapp.TablePlus.window.52170 AXActivationPoint: Optional(<AXValue 0x60000148b4e0> {value = x:10.000000 y:39.000000 type = kAXValueCGPointType})
com.tinyapp.TablePlus.window.52170 AXFullScreenButton: AXUIElement {
com.tinyapp.TablePlus.window.52170      AXRole: Optional(AXButton)
com.tinyapp.TablePlus.window.52170      AXTitle: nil
com.tinyapp.TablePlus.window.52170      AXSubrole: Optional(AXFullScreenButton)
com.tinyapp.TablePlus.window.52170      AXEnabled: Optional(1)
com.tinyapp.TablePlus.window.52170      AXParent: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      AXTopLevelUIElement: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      AXWindow: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
com.tinyapp.TablePlus.window.52170 }
com.tinyapp.TablePlus.window.52170 AXProxy: nil
com.tinyapp.TablePlus.window.52170 AXDefaultButton: AXUIElement {
com.tinyapp.TablePlus.window.52170      AXRole: Optional(AXButton)
com.tinyapp.TablePlus.window.52170      AXTitle: Optional(OK)
com.tinyapp.TablePlus.window.52170      AXIdentifier: Optional(_NS:52)
com.tinyapp.TablePlus.window.52170      AXEnabled: Optional(1)
com.tinyapp.TablePlus.window.52170      AXParent: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      AXTopLevelUIElement: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      AXWindow: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription
com.tinyapp.TablePlus.window.52170 }
com.tinyapp.TablePlus.window.52170 AXMinimized: Optional(0)
com.tinyapp.TablePlus.window.52170 AXParent: Optional(<AXUIElement Application 0x60000148b4e0> {pid=96438})
com.tinyapp.TablePlus.window.52170 AXTitleUIElement: nil
com.tinyapp.TablePlus.window.52170 AXCancelButton: nil
com.tinyapp.TablePlus.window.52170 AXModal: Optional(0)
com.tinyapp.TablePlus.window.52170 AXZoomButton: AXUIElement {
com.tinyapp.TablePlus.window.52170      AXRole: Optional(AXButton)
com.tinyapp.TablePlus.window.52170      AXTitle: nil
com.tinyapp.TablePlus.window.52170      AXSubrole: Optional(AXFullScreenButton)
com.tinyapp.TablePlus.window.52170      AXEnabled: Optional(1)
com.tinyapp.TablePlus.window.52170      AXParent: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      AXTopLevelUIElement: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      AXWindow: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus.window.52170      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
com.tinyapp.TablePlus.window.52170 }
com.tinyapp.TablePlus.window.52170 AXSize: Optional(<AXValue 0x6000014b6910> {value = w:1280.000000 h:1414.000000 type = kAXValueCGSizeType})
com.tinyapp.TablePlus.window.52170 AXToolbarButton: nil
com.tinyapp.TablePlus.window.52170 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription
com.tinyapp.TablePlus              AXRole: Optional(AXApplication)
com.tinyapp.TablePlus              AXTitle: Optional(TablePlus)
com.tinyapp.TablePlus              AXFunctionRowTopLevelElements: [
com.tinyapp.TablePlus              ]
com.tinyapp.TablePlus              AXFrame: nil
com.tinyapp.TablePlus              AXFocusedUIElement: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus              AXFrontmost: Optional(1)
com.tinyapp.TablePlus              AXExtrasMenuBar: nil
com.tinyapp.TablePlus              AXMainWindow: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus              AXFocusedWindow: AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus              AXMenuBar: Optional(<AXUIElement 0x6000014b6910> {pid=96438})
com.tinyapp.TablePlus              AXWindows: [
com.tinyapp.TablePlus                  AXUIElement(windowId=52170, title="docker mysql : performance_schema - MySQL 8.0.34", role="AXWindow", subrole="AXStandardWindow")
com.tinyapp.TablePlus              ]
com.tinyapp.TablePlus              AXSize: nil
com.tinyapp.TablePlus              AXPosition: nil
com.tinyapp.TablePlus              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
nikitabobko commented 6 days ago

Judging by AXWindows they do reuse the same mechanism. I didn't know it's possible to have different UI for it