Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dialog detection issue for F1 Multiviewer Live Timing windows #263

Closed
cbackas opened this issue Jun 10, 2024 · 0 comments
Closed

Dialog detection issue for F1 Multiviewer Live Timing windows #263

cbackas opened this issue Jun 10, 2024 · 0 comments

Comments

@cbackas
Copy link

cbackas commented Jun 10, 2024

Hi, I use Mutliviewer to watch F1 races. There's a certain window that it opens that is for some reason being treated as a dialog (the app developer made it impossible to minimize, if that matters).

Here's a screenshot, its just a normal window that I usually put full screen on my secondary monitor:
image

com.electron.multiviewer-for-f1.window.264542 windowId: 264542
com.electron.multiviewer-for-f1.window.264542 workspace: f1Main
com.electron.multiviewer-for-f1.window.264542 treeNodeParent: Workspace(name: 'f1Main', isVisible: 'true', isEffectivelyEmpty: 'false')
com.electron.multiviewer-for-f1.window.264542 recognizedAsDialog: true
com.electron.multiviewer-for-f1.window.264542 AXTitle: Optional(Replay Live Timing — MultiViewer)
com.electron.multiviewer-for-f1.window.264542 AXRole: Optional(AXWindow)
com.electron.multiviewer-for-f1.window.264542 AXSubrole: Optional(AXStandardWindow)
com.electron.multiviewer-for-f1.window.264542 AXFocused: Optional(0)
com.electron.multiviewer-for-f1.window.264542 AXFullScreen: Optional(0)
com.electron.multiviewer-for-f1.window.264542 AXFrame: Optional(<AXValue 0x600001a2bb80> {value = x:1150.000000 y:644.000000 w:1440.000000 h:1200.000000 type = kAXValueCGRectType})
com.electron.multiviewer-for-f1.window.264542 AXPosition: Optional(<AXValue 0x600000115170> {value = x:1150.000000 y:644.000000 type = kAXValueCGPointType})
com.electron.multiviewer-for-f1.window.264542 AXGrowArea: nil
com.electron.multiviewer-for-f1.window.264542 AXMinimizeButton: AXUIElement {
com.electron.multiviewer-for-f1.window.264542      AXRole: Optional(AXButton)
com.electron.multiviewer-for-f1.window.264542      AXTitle: nil
com.electron.multiviewer-for-f1.window.264542      AXSubrole: Optional(AXMinimizeButton)
com.electron.multiviewer-for-f1.window.264542      AXEnabled: Optional(0)
com.electron.multiviewer-for-f1.window.264542      AXParent: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.264542      AXTopLevelUIElement: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.264542      AXWindow: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.264542      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription
com.electron.multiviewer-for-f1.window.264542 }
com.electron.multiviewer-for-f1.window.264542 AXDocument: nil
com.electron.multiviewer-for-f1.window.264542 AXSections: [
com.electron.multiviewer-for-f1.window.264542         Optional({
com.electron.multiviewer-for-f1.window.264542             SectionDescription = Content;
com.electron.multiviewer-for-f1.window.264542             SectionObject = "<AXUIElement 0x600000115bc0> {pid=35029}";
com.electron.multiviewer-for-f1.window.264542             SectionUniqueID = AXContent;
com.electron.multiviewer-for-f1.window.264542         })
com.electron.multiviewer-for-f1.window.264542 ]
com.electron.multiviewer-for-f1.window.264542 AXCloseButton: AXUIElement {
com.electron.multiviewer-for-f1.window.264542      AXRole: Optional(AXButton)
com.electron.multiviewer-for-f1.window.264542      AXTitle: nil
com.electron.multiviewer-for-f1.window.264542      AXSubrole: Optional(AXCloseButton)
com.electron.multiviewer-for-f1.window.264542      AXEnabled: Optional(1)
com.electron.multiviewer-for-f1.window.264542      AXParent: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.264542      AXTopLevelUIElement: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.264542      AXWindow: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.264542      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited
com.electron.multiviewer-for-f1.window.264542 }
com.electron.multiviewer-for-f1.window.264542 AXMain: Optional(1)
com.electron.multiviewer-for-f1.window.264542 AXActivationPoint: Optional(<AXValue 0x600000113840> {value = x:1220.000000 y:658.000000 type = kAXValueCGPointType})
com.electron.multiviewer-for-f1.window.264542 AXFullScreenButton: nil
com.electron.multiviewer-for-f1.window.264542 AXProxy: nil
com.electron.multiviewer-for-f1.window.264542 AXDefaultButton: nil
com.electron.multiviewer-for-f1.window.264542 AXMinimized: Optional(0)
com.electron.multiviewer-for-f1.window.264542 AXParent: Optional(<AXUIElement Application 0x600000115170> {pid=35029})
com.electron.multiviewer-for-f1.window.264542 AXTitleUIElement: nil
com.electron.multiviewer-for-f1.window.264542 AXCancelButton: nil
com.electron.multiviewer-for-f1.window.264542 AXModal: Optional(0)
com.electron.multiviewer-for-f1.window.264542 AXZoomButton: AXUIElement {
com.electron.multiviewer-for-f1.window.264542      AXRole: Optional(AXButton)
com.electron.multiviewer-for-f1.window.264542      AXTitle: nil
com.electron.multiviewer-for-f1.window.264542      AXSubrole: Optional(AXZoomButton)
com.electron.multiviewer-for-f1.window.264542      AXEnabled: Optional(1)
com.electron.multiviewer-for-f1.window.264542      AXParent: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.264542      AXTopLevelUIElement: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.264542      AXWindow: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.264542      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
com.electron.multiviewer-for-f1.window.264542 }
com.electron.multiviewer-for-f1.window.264542 AXSize: Optional(<AXValue 0x600000115170> {value = w:1440.000000 h:1200.000000 type = kAXValueCGSizeType})
com.electron.multiviewer-for-f1.window.264542 AXToolbarButton: nil
com.electron.multiviewer-for-f1.window.264542 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription
com.electron.multiviewer-for-f1               AXRole: Optional(AXApplication)
com.electron.multiviewer-for-f1               AXTitle: Optional(MultiViewer for F1)
com.electron.multiviewer-for-f1               AXFunctionRowTopLevelElements: [
com.electron.multiviewer-for-f1                   Optional(<AXUIElement 0x600000115170> {pid=35029})
com.electron.multiviewer-for-f1               ]
com.electron.multiviewer-for-f1               AXFrame: nil
com.electron.multiviewer-for-f1               AXFocusedUIElement: nil
com.electron.multiviewer-for-f1               AXFrontmost: Optional(1)
com.electron.multiviewer-for-f1               AXExtrasMenuBar: nil
com.electron.multiviewer-for-f1               AXMainWindow: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1               AXFocusedWindow: AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1               AXMenuBar: Optional(<AXUIElement 0x600000115440> {pid=35029})
com.electron.multiviewer-for-f1               AXWindows: [
com.electron.multiviewer-for-f1                   AXUIElement(windowId=264542, title="Replay Live Timing — MultiViewer", role="AXWindow", subrole="AXStandardWindow"),
com.electron.multiviewer-for-f1                   AXUIElement(windowId=264500, title="2024 Canadian Grand Prix — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1               ]
com.electron.multiviewer-for-f1               AXSize: nil
com.electron.multiviewer-for-f1               AXPosition: nil
com.electron.multiviewer-for-f1               Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden

com.electron.multiviewer-for-f1.window.265308 windowId: 265308
com.electron.multiviewer-for-f1.window.265308 workspace: f1Main
com.electron.multiviewer-for-f1.window.265308 treeNodeParent: AppBundle.TilingContainer
com.electron.multiviewer-for-f1.window.265308 recognizedAsDialog: false
com.electron.multiviewer-for-f1.window.265308 AXTitle: Optional(Driver Tracker — MultiViewer)
com.electron.multiviewer-for-f1.window.265308 AXRole: Optional(AXWindow)
com.electron.multiviewer-for-f1.window.265308 AXSubrole: Optional(AXStandardWindow)
com.electron.multiviewer-for-f1.window.265308 AXFocused: Optional(0)
com.electron.multiviewer-for-f1.window.265308 AXFullScreen: Optional(0)
com.electron.multiviewer-for-f1.window.265308 AXFrame: Optional(<AXValue 0x600001af9100> {value = x:1925.000000 y:525.000000 w:1515.000000 h:852.000000 type = kAXValueCGRectType})
com.electron.multiviewer-for-f1.window.265308 AXPosition: Optional(<AXValue 0x6000001a7450> {value = x:1925.000000 y:525.000000 type = kAXValueCGPointType})
com.electron.multiviewer-for-f1.window.265308 AXGrowArea: nil
com.electron.multiviewer-for-f1.window.265308 AXMinimizeButton: AXUIElement {
com.electron.multiviewer-for-f1.window.265308      AXRole: Optional(AXButton)
com.electron.multiviewer-for-f1.window.265308      AXTitle: nil
com.electron.multiviewer-for-f1.window.265308      AXSubrole: Optional(AXMinimizeButton)
com.electron.multiviewer-for-f1.window.265308      AXEnabled: Optional(1)
com.electron.multiviewer-for-f1.window.265308      AXParent: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      AXTopLevelUIElement: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      AXWindow: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription
com.electron.multiviewer-for-f1.window.265308 }
com.electron.multiviewer-for-f1.window.265308 AXDocument: nil
com.electron.multiviewer-for-f1.window.265308 AXSections: [
com.electron.multiviewer-for-f1.window.265308 ]
com.electron.multiviewer-for-f1.window.265308 AXCloseButton: AXUIElement {
com.electron.multiviewer-for-f1.window.265308      AXRole: Optional(AXButton)
com.electron.multiviewer-for-f1.window.265308      AXTitle: nil
com.electron.multiviewer-for-f1.window.265308      AXSubrole: Optional(AXCloseButton)
com.electron.multiviewer-for-f1.window.265308      AXEnabled: Optional(1)
com.electron.multiviewer-for-f1.window.265308      AXParent: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      AXTopLevelUIElement: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      AXWindow: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited
com.electron.multiviewer-for-f1.window.265308 }
com.electron.multiviewer-for-f1.window.265308 AXMain: Optional(1)
com.electron.multiviewer-for-f1.window.265308 AXActivationPoint: Optional(<AXValue 0x6000001ba070> {value = x:1935.000000 y:539.000000 type = kAXValueCGPointType})
com.electron.multiviewer-for-f1.window.265308 AXFullScreenButton: AXUIElement {
com.electron.multiviewer-for-f1.window.265308      AXRole: Optional(AXButton)
com.electron.multiviewer-for-f1.window.265308      AXTitle: nil
com.electron.multiviewer-for-f1.window.265308      AXSubrole: Optional(AXFullScreenButton)
com.electron.multiviewer-for-f1.window.265308      AXEnabled: Optional(1)
com.electron.multiviewer-for-f1.window.265308      AXParent: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      AXTopLevelUIElement: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      AXWindow: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
com.electron.multiviewer-for-f1.window.265308 }
com.electron.multiviewer-for-f1.window.265308 AXProxy: nil
com.electron.multiviewer-for-f1.window.265308 AXDefaultButton: nil
com.electron.multiviewer-for-f1.window.265308 AXMinimized: Optional(0)
com.electron.multiviewer-for-f1.window.265308 AXParent: Optional(<AXUIElement Application 0x6000001a2790> {pid=35029})
com.electron.multiviewer-for-f1.window.265308 AXTitleUIElement: nil
com.electron.multiviewer-for-f1.window.265308 AXCancelButton: nil
com.electron.multiviewer-for-f1.window.265308 AXModal: Optional(0)
com.electron.multiviewer-for-f1.window.265308 AXZoomButton: AXUIElement {
com.electron.multiviewer-for-f1.window.265308      AXRole: Optional(AXButton)
com.electron.multiviewer-for-f1.window.265308      AXTitle: nil
com.electron.multiviewer-for-f1.window.265308      AXSubrole: Optional(AXFullScreenButton)
com.electron.multiviewer-for-f1.window.265308      AXEnabled: Optional(1)
com.electron.multiviewer-for-f1.window.265308      AXParent: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      AXTopLevelUIElement: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      AXWindow: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1.window.265308      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription
com.electron.multiviewer-for-f1.window.265308 }
com.electron.multiviewer-for-f1.window.265308 AXSize: Optional(<AXValue 0x6000001ba070> {value = w:1515.000000 h:852.000000 type = kAXValueCGSizeType})
com.electron.multiviewer-for-f1.window.265308 AXToolbarButton: nil
com.electron.multiviewer-for-f1.window.265308 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription
com.electron.multiviewer-for-f1               AXRole: Optional(AXApplication)
com.electron.multiviewer-for-f1               AXTitle: Optional(MultiViewer for F1)
com.electron.multiviewer-for-f1               AXFunctionRowTopLevelElements: [
com.electron.multiviewer-for-f1                   Optional(<AXUIElement 0x6000001b9140> {pid=35029})
com.electron.multiviewer-for-f1               ]
com.electron.multiviewer-for-f1               AXFrame: nil
com.electron.multiviewer-for-f1               AXFocusedUIElement: nil
com.electron.multiviewer-for-f1               AXFrontmost: Optional(1)
com.electron.multiviewer-for-f1               AXExtrasMenuBar: nil
com.electron.multiviewer-for-f1               AXMainWindow: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1               AXFocusedWindow: AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1               AXMenuBar: Optional(<AXUIElement 0x6000001dd800> {pid=35029})
com.electron.multiviewer-for-f1               AXWindows: [
com.electron.multiviewer-for-f1                   AXUIElement(windowId=265308, title="Driver Tracker — MultiViewer", role="AXWindow", subrole="AXStandardWindow"),
com.electron.multiviewer-for-f1                   AXUIElement(windowId=264680, title="2024 Canadian Grand Prix — MultiViewer", role="AXWindow", subrole="AXStandardWindow")
com.electron.multiviewer-for-f1               ]
com.electron.multiviewer-for-f1               AXSize: nil
com.electron.multiviewer-for-f1               AXPosition: nil
com.electron.multiviewer-for-f1               Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden

If I'm reading the docs right, there's no way to override this on my end?

just using app-id filtering with [[on-window-detected]] makes it tile every window including the Live Timing window:

[[on-window-detected]]
if.app-id = 'com.electron.multiviewer-for-f1'
run = 'layout tiling'

but this app makes a lot of windows and theres only a few i actually want to be tiled, so I need to do window-title-regex matching but I can't get any of the window name matching to work for Multiviewer (I can for Mail and other apps)

aerospace list-windows --workspace f1Main

264680 | MultiViewer for F1 | 2024 Canadian Grand Prix — MultiViewer
265161 | MultiViewer for F1 | Driver Tracker — MultiViewer
265159 | MultiViewer for F1 | Replay Live Timing — MultiViewer

When I try things like this with the specific windows title filter it doesn't work:

[[on-window-detected]]
if.window-title-regex-substring = "Replay Live Timing — MultiViewer"
run = 'layout tiling'

Similar attempts to match the "Driver Tracker" and other windows don't work either

Repository owner locked and limited conversation to collaborators Jan 18, 2025
@nikitabobko nikitabobko converted this issue into discussion #1019 Jan 18, 2025

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant