Files

35 lines
1.2 KiB
Python

#!/usr/bin/env python3
import sys
import argparse
from dogtail.tree import root
def dump_node(node, depth=0, max_depth=10):
if depth > max_depth:
return
try:
name = node.name.strip()
role = node.roleName
# Only print if it has a name or is an interesting interactive element
if name or role in ['push button', 'entry', 'menu item', 'toggle button', 'check box']:
print(' ' * depth + f'<{role}> {name}')
for child in node.children:
dump_node(child, depth + 1, max_depth)
except:
pass
def main():
parser = argparse.ArgumentParser(description="Inspect Linux GUI application UI tree.")
parser.add_argument("app_name", help="Name of the application to inspect.")
parser.add_argument("--max-depth", type=int, default=15, help="Maximum depth to traverse.")
args = parser.parse_args()
try:
app = root.application(args.app_name)
print(f"Dump for application: {args.app_name}")
dump_node(app, max_depth=args.max_depth)
except Exception as e:
print(f"Error: Could not find or inspect application '{args.app_name}'. {e}")
if __name__ == "__main__":
main()