()
| 487 | |
| 488 | |
| 489 | def register_standard_browsers(): |
| 490 | global _tryorder |
| 491 | _tryorder = [] |
| 492 | |
| 493 | if sys.platform == 'darwin': |
| 494 | register("MacOSX", None, MacOSXOSAScript('default')) |
| 495 | register("chrome", None, MacOSXOSAScript('google chrome')) |
| 496 | register("firefox", None, MacOSXOSAScript('firefox')) |
| 497 | register("safari", None, MacOSXOSAScript('safari')) |
| 498 | # macOS can use below Unix support (but we prefer using the macOS |
| 499 | # specific stuff) |
| 500 | |
| 501 | if sys.platform == "ios": |
| 502 | register("iosbrowser", None, IOSBrowser(), preferred=True) |
| 503 | |
| 504 | if sys.platform == "serenityos": |
| 505 | # SerenityOS webbrowser, simply called "Browser". |
| 506 | register("Browser", None, BackgroundBrowser("Browser")) |
| 507 | |
| 508 | if sys.platform[:3] == "win": |
| 509 | # First try to use the default Windows browser |
| 510 | register("windows-default", WindowsDefault) |
| 511 | |
| 512 | # Detect some common Windows browsers, fallback to Microsoft Edge |
| 513 | # location in 64-bit Windows |
| 514 | edge64 = os.path.join(os.environ.get("PROGRAMFILES(x86)", "C:\\Program Files (x86)"), |
| 515 | "Microsoft\\Edge\\Application\\msedge.exe") |
| 516 | # location in 32-bit Windows |
| 517 | edge32 = os.path.join(os.environ.get("PROGRAMFILES", "C:\\Program Files"), |
| 518 | "Microsoft\\Edge\\Application\\msedge.exe") |
| 519 | for browser in ("firefox", "seamonkey", "mozilla", "chrome", |
| 520 | "opera", edge64, edge32): |
| 521 | if shutil.which(browser): |
| 522 | register(browser, None, BackgroundBrowser(browser)) |
| 523 | if shutil.which("MicrosoftEdge.exe"): |
| 524 | register("microsoft-edge", None, Edge("MicrosoftEdge.exe")) |
| 525 | else: |
| 526 | # Prefer X browsers if present |
| 527 | # |
| 528 | # NOTE: Do not check for X11 browser on macOS, |
| 529 | # XQuartz installation sets a DISPLAY environment variable and will |
| 530 | # autostart when someone tries to access the display. Mac users in |
| 531 | # general don't need an X11 browser. |
| 532 | if sys.platform != "darwin" and (os.environ.get("DISPLAY") or os.environ.get("WAYLAND_DISPLAY")): |
| 533 | try: |
| 534 | cmd = "xdg-settings get default-web-browser".split() |
| 535 | raw_result = subprocess.check_output(cmd, stderr=subprocess.DEVNULL) |
| 536 | result = raw_result.decode().strip() |
| 537 | except (FileNotFoundError, subprocess.CalledProcessError, |
| 538 | PermissionError, NotADirectoryError): |
| 539 | pass |
| 540 | else: |
| 541 | global _os_preferred_browser |
| 542 | _os_preferred_browser = result |
| 543 | |
| 544 | register_X_browsers() |
| 545 | |
| 546 | # Also try console browsers |
no test coverage detected
searching dependent graphs…